扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章为大家展示了Springboot应用到底启动了哪些bean,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为洛阳企业提供专业的网站设计、网站建设,洛阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
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提供了用于监控应用程序统计信息的端点。下面看看这种方式:
第一步:添加依赖
org.springframework.boot spring-boot-starter-actuator
第二步:修改application.properties
management.endpoints.web.exposure.include=*
把上面代码添加到properties文件中。
第三步:使用发布端点查看
由于这里的Actuator没有配置,所以显示的比较乱。
上述内容就是Springboot应用到底启动了哪些bean,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流