Boz*_*zho 82
是的,得到支持ApplicationContext
并致电.getBeanDefinitionNames()
您可以通过以下方式获取上下文
ApplicationContextAware
@Inject
/ @Autowired
(2.5)之后WebApplicationContextUtils.getRequiredWebApplicationContext(..)
相关:您还可以通过注册BeanPostprocessor
bean 来检测每个bean的注册.每个bean都会收到通知.
Akc*_*tor 62
public class PrintBeans {
@Autowired
ApplicationContext applicationContext;
public void printBeans() {
System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames()));
}
}
Run Code Online (Sandbox Code Playgroud)
小智 21
打印所有bean名称及其类:
package com.javahash.spring.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloWorldController {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping("/hello")
public String hello(@RequestParam(value="key", required=false, defaultValue="World") String name, Model model) {
String[] beanNames = applicationContext.getBeanDefinitionNames();
for (String beanName : beanNames) {
System.out.println(beanName + " : " + applicationContext.getBean(beanName).getClass().toString());
}
model.addAttribute("name", name);
return "helloworld";
}
}
Run Code Online (Sandbox Code Playgroud)
vie*_*nem 16
使用Spring Boot和执行器启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
你可以检查端点 /beans
你可以尝试打电话
org.springframework.beans.factory.ListableBeanFactory.getBeansOfType(Object.class)
Run Code Online (Sandbox Code Playgroud)
或者打开调试日志记录org.springframework
.(在春季启动时,那是使用参数--logging.level.org.springframework=DEBUG
)
applicationContext.getBeanDefinitionNames()并没有显示其注册的豆子没有的BeanDefinition实例。
package io.velu.core;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
public class Core {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Core.class);
String[] singletonNames = context.getDefaultListableBeanFactory().getSingletonNames();
for (String singleton : singletonNames) {
System.out.println(singleton);
}
}
Run Code Online (Sandbox Code Playgroud)
}
environment
systemProperties
systemEnvironment
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
messageSource
applicationEventMulticaster
lifecycleProcessor
Run Code Online (Sandbox Code Playgroud)
正如您在输出中看到的那样,不会使用context.getBeanDefinitionNames()方法显示环境,systemProperties和systemEnvironment Bean 。
对于Spring Boot Web应用程序,可以使用以下端点列出所有bean。
@RestController
@RequestMapping("/list")
class ExportController {
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/beans")
@ResponseStatus(value = HttpStatus.OK)
String[] registeredBeans() {
return printBeans();
}
private String[] printBeans() {
AutowireCapableBeanFactory autowireCapableBeanFactory = applicationContext.getAutowireCapableBeanFactory();
if (autowireCapableBeanFactory instanceof SingletonBeanRegistry) {
String[] singletonNames = ((SingletonBeanRegistry) autowireCapableBeanFactory).getSingletonNames();
for (String singleton : singletonNames) {
System.out.println(singleton);
}
return singletonNames;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
}
[“ autoConfigurationReport”,“ springApplicationArguments”,“ springBootBanner”,“ springBootLoggingSystem”,“ environment”,“ systemProperties”,“ systemEnvironment”,“ org.springframework.context.annotation.internalConfigurationAnnotationProcessor”,“ org.springframework.boot.autoconfigure。” internalCachingMetadataReaderFactory”,“ org.springframework.boot.auto.config.condition.BeanTypeRegistry”,“ org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry”,“ propertySourcesPlaceholderConfigurer”,“ org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.store” ,“prepareErrorControllerTargetClassPostProcessor“,” org.springframework.context.annotation.internalAutowiredAnnotationProcessor“,” org.springframework.context.annotation.internalRequiredAnnotationProcessor“,” org.springframework.context.annotation.internalCommonAnnotationProcessor“,” org.springframeproperties.boot。 ConfigurationPropertiesBindingPostProcessor”,“ org.springframework.scheduling.annotation.ProxyAsyncConfiguration”,“ org.springframework.context.annotation.internalAsyncAnnotationProcessor”,“ methodValidationPostProcessor”,“ embeddedServletContainerCustomizerBeanPostProcessor”,“ errorPageRegistrarBeanPostSource”,“applicationEventMulticaster”,“ org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration $ EmbeddedTomcat”,“ tomcatEmbeddedServletContainerFactory”,“ org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration $ TomcatWebSocketConfiguration”,“ websocketContainerCustomen”编码“ spring.http”。 org.springframework.boot.autoconfigure.web.HttpEncodingProperties”,“ org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration”,“ localeCharsetMappingsCustomizer”,“ org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration”,“ serverProperties”,“ plicatorServerPropertiesDetector”,“ spring.resources-org.springframework.boot。autoconfigure.web.ResourceProperties”,“ org.springframework.boot.auto.config.web.ErrorMvcAutoConfiguration $ DefaultErrorViewResolverConfiguration”,“ conventionErrorViewResolver”,“ org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration”,“ errorPageCustomizer”,“ servletContext”,“ contextParameters”,“ contextAttributes”,“ spring.mvc-org.springframework.boot.autoconfigure.web.WebMvcProperties”,“ spring.http.multipart-org.springframework.boot.autoconfigure.web.MultipartProperties”,“ org.springframework”。 boot.autoconfigure.web.MultipartAutoConfiguration”,“ multipartConfigElement”,“ org.springframework.boot.autoconfigure.web”。DispatcherServletAutoConfiguration $ DispatcherServletRegistrationConfiguration”,“ org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration $ DispatcherServletConfiguration”,“ dispatcherServlet”,“ dispatcherServletRegistration”,“ requestContextFilter”,“ org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration”,“ hiddenHttpMethod” ,“ httpPutFormContentFilter”,“ characterEncodingFilter”,“ org.springframework.context.event.internalEventListenerProcessor”,“ org.springframework.context.event.internalEventListenerFactory”,“ reportGeneratorApplication”,“ exportController”,“ exportService”,“ org.springframework”。开机。autoconfigure.AutoConfigurationPackages”,“ org.springframework.boot.auto.config.context.PropertyPlaceholderAutoConfiguration”,“ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ Jackson2ObjectMapperBuilderCustomizerConfiguration”,“ spring.jackson-org.springframework.boot.autoconfigure.jackson”。 JacksonProperties”,“ standardJacksonObjectMapperBuilderCustomizer”,“ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ JacksonObjectMapperBuilderConfiguration”,“ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration”,“ jsonComponentModule”,“ jacksonObjectMapperBuilder”,“ orgspring”。 boot.autoconfigure.jackson。JacksonAutoConfiguration $ JacksonObjectMapperConfiguration”,“ jacksonObjectMapper”,“ org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration”,“ org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration”,“ org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration” ,“ org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration”,“ defaultValidator”,“ org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration $ WhitelabelErrorViewConfiguration”,“ error”,“ beanNameViewResolver”,“ errorAttributes”,“ basicErrorController” ,“ org.springframework.boot.autoconfigure.web。WebMvcAutoConfiguration $ EnableWebMvcConfiguration”,“ org.springframework.boot.auto.config.web.WebMvcAutoConfiguration $ WebMvcAutoConfigurationAdapter”,“ mvcContentNegotiationManager”,“ org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration $ StringHttpMessageConverterConfiguration”,“ stringHttpMessageConverterwork”,“ org.spring.org”。 boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration $ MappingJackson2HttpMessageConverterConfiguration”,“ mappingJackson2HttpMessageConverter”,“ org.springframework.boot.auto.config.web.HttpMessageConvertersAutoConfiguration”,“ messageConverters”,“ mvcConversionService”,“ mvcValidator”,“requestMappingHandlerAdapter”,“ mvcResourceUrlProvider”,“ requestMappingHandlerMapping”,“ mvcPathMatcher”,“ mvcUrlPathHelper”,“ viewControllerHandlerMapping”,“ beanNameHandlerMapping”,“ resourceHandlerMapping”,“ defaultServletHandlerMapping”,“ mvcUriComponentsContributor”,“ httpRequestHandlerAdapterHandlerException” ,“ mvcViewResolver”,“ org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration $ WebMvcAutoConfigurationAdapter $ FaviconConfiguration”,“ faviconRequestHandler”,“ faviconHandlerMapping”,“ defaultViewResolver”,“viewResolver”,“ welcomePageHandlerMapping”,“ org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration”,“ objectNamingStrategy”,“ mbeanServer”,“ mbeanExporter”,“ org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration”,“ springApplicationAdminRegistrar” ,“ org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration”,“ org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration”,“ spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties”,“ org。 springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration”,“ multipartResolver”,“ org。springframework.boot.autoconfigure.web.WebClientAutoConfiguration $ RestTemplateConfiguration”,“ restTemplateBuilder”,“ org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration”,“ spring.devtools-org.springframework.boot.devtools.autoconfigure.DevToolsProperties”,“ org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration $ RestartConfiguration“,” fileSystemWatcherFactory“,” classPathRestartStrategy“,” classPathFileSystemWatcher“,” hateoasObjenesisCacheDisabler“,” org.springframework.boot.devtools.autoconfigure.LocalRevToolsAutoConfiguration $ Live org.springframework.boot.devtools.autoconfigure。LocalDevToolsAutoConfiguration $ LiveReloadConfiguration”,“ OptionalLiveReloadServer”,“ org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration”,“ lifecycleProcessor”]
这是从 spring 应用程序上下文中打印所有 bean 名称的另一种方法:
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
/***********************************************************************************************************
* Java File: MainApplication.java
* Description: Main class to run the application.
*
***********************************************************************************************************/
@SpringBootApplication
public class MainApplication {
private static final Logger logger = LogManager.getLogger(MainApplication.class);
public static void main(String[] args)
{
final ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);
final AtomicInteger counter = new AtomicInteger(0);
logger.info("**************** START: Total Bean Objects: {} ******************", context.getBeanDefinitionCount());
Arrays.asList(context.getBeanDefinitionNames())
.forEach(beanName -> {
logger.info("{}) Bean Name: {} ", counter.incrementAndGet(), beanName);
});
logger.info("**************** END: Total Bean: {} ******************", context.getBeanDefinitionCount());
}
}
Sample Output:
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:18] - **************** START: Total Bean Objects: 564 ******************
...........................
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 460) Bean Name: mvcPathMatcher
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 461) Bean Name: mvcUrlPathHelper
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 462) Bean Name: viewControllerHandlerMapping
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 463) Bean Name: beanNameHandlerMapping
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 464) Bean Name: resourceHandlerMapping
...........................
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:25] - **************** END: Total Bean: 564 ******************
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
72147 次 |
最近记录: |