本篇文章為大家展示了Springboot應(yīng)用到底啟動(dòng)了哪些bean,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為洛陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),洛陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
1. 概述
我們將探索在容器中獲取所有spring管理的bean的相關(guān)技術(shù)。這有神馬用?主要是用于排查問題。一般都是我們創(chuàng)建的某一個(gè)bean沒有啟動(dòng)的問題。畢竟工作中總是會遇到各種各樣的bug。提前了解一些沒有壞處。
2. IoC容器
bean是spring管理的應(yīng)用程序的基礎(chǔ),所有bean都駐留在IOC容器中,該容器負(fù)責(zé)管理它們的生命周期。
我們可以通過兩種方式獲取該容器內(nèi)所有bean的列表:
使用ListableBeanFactory接口
使用Spring Boot Actuator
3.使用ListableBeanFactory接口
ListableBeanFactory接口提供了getBeanDefinitionNames()方法,該方法返回在這個(gè)工廠中定義的所有bean的名稱。您可以在官方文檔中找到所有已知子接口及其實(shí)現(xiàn)類的列表。我們來看這種方式如何獲取所有的bean。
第一步:創(chuàng)建一個(gè)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"; } }
這個(gè)Controller依賴于另一個(gè)FooService。
第二步:創(chuàng)建Service
@Service public class FooService { public String getHeader() { return "Display All Beans"; } public String getBody() { return "展示所有beans的案例"; } }
注意,我們在這里創(chuàng)建了兩個(gè)不同的bean:
fooController
fooService
這里使用applicationContext對象并調(diào)用它的getBeanDefinitionNames()方法,該方法將返回applicationContext容器中的所有bean:
第三步:設(shè)置SpringBootApplication啟動(dòng)類
@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。為了清楚起見,我們在這里省略了它們,因?yàn)樗鼈冇泻芏唷?/p>
4. 使用Spring Boot Actuator
Spring Boot Actuator提供了用于監(jiān)控應(yīng)用程序統(tǒng)計(jì)信息的端點(diǎn)。下面看看這種方式:
第一步:添加依賴
org.springframework.boot spring-boot-starter-actuator
第二步:修改application.properties
management.endpoints.web.exposure.include=*
把上面代碼添加到properties文件中。
第三步:使用發(fā)布端點(diǎn)查看
由于這里的Actuator沒有配置,所以顯示的比較亂。
上述內(nèi)容就是Springboot應(yīng)用到底啟動(dòng)了哪些bean,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。