你的Springboot应用到底启动了哪些bean?这两种方式可以帮你获取
1. 概述
在本文中,我们将探索在容器中获取所有spring管理的bean的相关技术。这有神马用?主要是用于排查问题。一般都是我们创建的某一个bean没有启动的问题。毕竟工作中总是会遇到各种各样的bug。提前了解一些没有坏处。
2. IoC容器
bean是spring管理的应用程序的基础,所有bean都驻留在IOC容器中,该容器负责管理它们的生命周期。
我们可以通过两种方式获取该容器内所有bean的列表:
- 使用ListableBeanFactory接口
- 使用Spring Boot Actuator
3.使用ListableBeanFactory接口
ListableBeanFactory接口提供了getBeanDefinitionNames()方法,该方法返回在这个工厂中定义的所有bean的名称。您可以在官方文档中找到所有已知子接口及其实现类的列表。我们来看这种方式如何获取所有的bean。
第一步:创建一个Controller
- @Controller
- public class FooController {
- @Autowired
- private FooService fooService;
- @RequestMapping(value="/displayallbeans")
- public String getHeaderAndBody(Map model){
- model.put("header", fooService.getHeader());
- model.put("message", fooService.getBody());
- return "displayallbeans";
- }
- }
这个Controller依赖于另一个FooService。
第二步:创建Service
- @Service
- public class FooService {
- public String getHeader() {
- return "Display All Beans";
- }
- public String getBody() {
- return "展示所有beans的案例";
- }
- }
注意,我们在这里创建了两个不同的bean:
- fooController
- fooService
这里使用applicationContext对象并调用它的getBeanDefinitionNames()方法,该方法将返回applicationContext容器中的所有bean:
第三步:设置SpringBootApplication启动类
- @SpringBootApplication
- public class DemoApplication {
- private static ApplicationContext applicationContext;
- public static void main(String[] args) {
- applicationContext = SpringApplication.run(DemoApplication.class, args);
- displayAllBeans();
- }
- public static void displayAllBeans() {
- String[] allBeanNames = applicationContext.getBeanDefinitionNames();
- for(String beanName : allBeanNames) {
- System.out.println(beanName);
- }
- }
- }
第四步:测试打印
这将打印applicationContext容器中的所有bean:
注意,除了我们定义的bean之外,它还将记录该容器中的所有其他bean。为了清楚起见,我们在这里省略了它们,因为它们有很多。
4. 使用Spring Boot Actuator
Spring 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。希望对你有点帮助。
本文转载自微信公众号「愚公要移山」,可以通过以下二维码关注。转载本文请联系愚公要移山公众号。
相关文章
- 基于OpenHarmony3.0LTS和HarmonyOS2.0手机的温湿度计案例Demo
- 使用 Promethues 实现应用监控的一些实践
- 深度操作系统 deepin 20.5 发布!新增人脸识别,应用商店支持触屏,全局搜索优化(附更新内容大全)
- 复制文字会自动推荐应用?Windows 11智能剪贴板曝光
- 微软 Windows 11 Beta Release 预览版 Build 22000.588 发布,进行大量修复
- OpenHarmony系统是怎么知道应用是Ark应用的
- Openharmony - 3516应用调用到驱动尝试
- Windows 11自带播放器其实超好用!教你几招玩转它
- 微软 Windows 11 Dev 22572 更新:原生应用升级、Microsoft Defender 预览版上线
- OpenHarmony应用开发—配置OpenHarmony应用签名信息
- 了解一些ArkUI概念并熟悉应用的结构
- 只需两步,就可以在Windows 11操作系统上运行Android程序,非常简单
- 微软正在重新设计Windows 11的文档默认打开方式窗口
- 微软Windows 11 安卓子系统运行谷歌 Play Store 上手体验:运行 Google Docs、YouTube 等应用
- 基于HarmonyOS低代码开发的学习与应用
- OpenHarmony预置系统应用编译安装全流程记录
- Windows 11运行安卓App必须满足五个PC配置:最低8GB内存 没SSD告辞
- 微软公布运行Android应用/游戏的Windows 11设备要求
- Windows 11承诺的支持安卓App终于更新了 大神教你如何在国区使用
- 重新设计的Windows记事本和Media Player上架