打印所有加载的Spring bean
有没有办法打印启动时加载的所有弹簧bean?我正在使用Spring 2.0。
是的,得到ApplicationContext .getBeanDefinitionNames()并调用.getBeanDefinitionNames() 
您可以通过以下方式获取上下文
-  实现ApplicationContextAware
-  注入@Inject/@Autowired(2.5之后)
-  使用WebApplicationContextUtils.getRequiredWebApplicationContext(..)
 相关:您还可以通过注册一个BeanPostprocessor bean来检测每个bean的注册。 它会通知每个bean。 
 public class PrintBeans { @Autowired ApplicationContext applicationContext; public void printBeans() { System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames())); } } 
打印所有的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"; } } 
带有Spring Boot和执行器启动器
 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 
 你可以检查端点/beans 
你可以尝试打电话
 org.springframework.beans.factory.ListableBeanFactory.getBeansOfType(Object.class) 
 或者打开org.springframeworkdebugging日志logging。