spring boot可以定义什么为bean(这两种方式可以获取)
spring boot可以定义什么为bean(这两种方式可以获取)注意,除了我们定义的bean之外,它还将记录该容器中的所有其他bean。为了清楚起见,我们在这里省略了它们,因为它们有很多。@SpringBootApplication publicclassDemoApplication{ privatestaticApplicationContextapplicationContext; publicstaticvoidmain(String[]args){ applicationContext=SpringApplication.run(DemoApplication.class args); displayAllBeans(); } publicstaticvoiddisplayAllBeans(){ String[]allBeanNames=applicationContext.getBeanDefinitionNames(); for(Stri
1. 概述在本文中,我们将探索在容器中获取所有spring管理的bean的相关技术。这有神马用?主要是用于排查问题。一般都是我们创建的某一个bean没有启动的问题。毕竟工作中总是会遇到各种各样的bug。提前了解一些没有坏处。
2. IoC容器bean是spring管理的应用程序的基础,所有bean都驻留在IOC容器中,该容器负责管理它们的生命周期。
我们可以通过两种方式获取该容器内所有bean的列表:
- 使用ListableBeanFactory接口
- 使用Spring Boot Actuator
ListableBeanFactory接口提供了getBeanDefinitionNames()方法,该方法返回在这个工厂中定义的所有bean的名称。您可以在官方文档中找到所有已知的接口及其实现类的列表。我们来看这种方式如何获取所有的bean。
第一步:创建一个Controller@Controller
publicclassFooController{
@Autowired
privateFooServicefooService;
@RequestMapping(value="/displayallbeans")
publicStringgetheaderAndBody(Mapmodel){
model.put("header" fooService.getHeader());
model.put("message" fooService.getBody());
return"displayallbeans";
}
}
这个Controller依赖于另一个FooService。
第二步:创建Service@Service
publicclassFooService{
publicStringgetHeader(){
return"DisplayAllBeans";
}
publicStringgetBody(){
return"展示所有beans的案例";
}
}
注意,我们在这里创建了两个不同的bean:
- fooController
- fooService
这里使用ApplicationContext对象并调用它的getBeanDefinitionNames()方法,该方法将返回applicationContext容器中的所有bean:
第三步:设置SpringBootApplication启动类@SpringBootApplication
publicclassDemoApplication{
privatestaticApplicationContextapplicationContext;
publicstaticvoidmain(String[]args){
applicationContext=SpringApplication.run(DemoApplication.class args);
displayAllBeans();
}
publicstaticvoiddisplayAllBeans(){
String[]allBeanNames=applicationContext.getBeanDefinitionNames();
for(StringbeanName:allBeanNames){
System.out.println(beanName);
}
}
}
第四步:测试打印
这将打印applicationContext容器中的所有bean:
注意,除了我们定义的bean之外,它还将记录该容器中的所有其他bean。为了清楚起见,我们在这里省略了它们,因为它们有很多。
4. 使用Spring Boot ActuatorSpring Boot Actuator提供了用于监控应用程序统计信息的端点。下面看看这种方式:
第一步:添加依赖<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
第二步:修改application.properties
management.endpoints.web.exposure.include=*
把上面代码添加到properties文件中。
第三步:使用发布端点查看由于这里的Actuator没有配置,所以显示的比较乱。关于Actuator的配置,会在下一篇文章中呈现。
5. 结论在本文中,我们了解了如何使用ListableBeanFactory接口和Spring Boot Actuator在Spring IoC容器中显示所有bean。希望对你有点帮助。
更多文章:请关注
2T后端教程,5000本电子书,1T面试资料,都在这里
java小白到架构师技术图谱(整理全网,持续更新)
我的专栏: