日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你的Springboot應(yīng)用到底啟動(dòng)了哪些bean?這兩種方式可以幫你獲取

1. 概述

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比蠡縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式蠡縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋蠡縣地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

在本文中,我們將探索在容器中獲取所有spring管理的bean的相關(guān)技術(shù)。這有神馬用?主要是用于排查問題。一般都是我們創(chuàng)建的某一個(gè)bean沒有啟動(dòng)的問題。畢竟工作中總是會(huì)遇到各種各樣的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

 
 
 
 
  1. @Controller 
  2. public class FooController { 
  3.     @Autowired 
  4.     private FooService fooService; 
  5.     @RequestMapping(value="/displayallbeans") 
  6.     public String getHeaderAndBody(Map model){ 
  7.         model.put("header", fooService.getHeader()); 
  8.         model.put("message", fooService.getBody()); 
  9.         return "displayallbeans"; 
  10.     } 

這個(gè)Controller依賴于另一個(gè)FooService。

第二步:創(chuàng)建Service

 
 
 
 
  1. @Service 
  2. public class FooService { 
  3.     public String getHeader() { 
  4.         return "Display All Beans"; 
  5.     } 
  6.     public String getBody() { 
  7.         return "展示所有beans的案例"; 
  8.     } 

注意,我們?cè)谶@里創(chuàng)建了兩個(gè)不同的bean:

  • fooController
  • fooService

這里使用applicationContext對(duì)象并調(diào)用它的getBeanDefinitionNames()方法,該方法將返回applicationContext容器中的所有bean:

第三步:設(shè)置SpringBootApplication啟動(dòng)類

 
 
 
 
  1. @SpringBootApplication 
  2. public class DemoApplication { 
  3.     private static ApplicationContext applicationContext; 
  4.     public static void main(String[] args) { 
  5.         applicationContext = SpringApplication.run(DemoApplication.class, args); 
  6.         displayAllBeans(); 
  7.     } 
  8.     public static void displayAllBeans() { 
  9.         String[] allBeanNames = applicationContext.getBeanDefinitionNames(); 
  10.         for(String beanName : allBeanNames) { 
  11.             System.out.println(beanName); 
  12.         } 
  13.     } 

第四步:測試打印

這將打印applicationContext容器中的所有bean:

注意,除了我們定義的bean之外,它還將記錄該容器中的所有其他bean。為了清楚起見,我們?cè)谶@里省略了它們,因?yàn)樗鼈冇泻芏唷?/p>

4. 使用Spring Boot Actuator

Spring Boot Actuator提供了用于監(jiān)控應(yīng)用程序統(tǒng)計(jì)信息的端點(diǎn)。下面看看這種方式:

第一步:添加依賴

 
 
 
 
  1.  
  2.     org.springframework.boot 
  3.     spring-boot-starter-actuator 
  4.  

第二步:修改application.properties

 
 
 
 
  1. management.endpoints.web.exposure.include=* 

把上面代碼添加到properties文件中。

第三步:使用發(fā)布端點(diǎn)查看

由于這里的Actuator沒有配置,所以顯示的比較亂。關(guān)于Actuator的配置,會(huì)在下一篇文章中呈現(xiàn)。

5. 結(jié)論

在本文中,我們了解了如何使用ListableBeanFactory接口和Spring Boot Actuator在Spring IoC容器中顯示所有bean。希望對(duì)你有點(diǎn)幫助。

本文轉(zhuǎn)載自微信公眾號(hào)「愚公要移山」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系愚公要移山公眾號(hào)。


本文題目:你的Springboot應(yīng)用到底啟動(dòng)了哪些bean?這兩種方式可以幫你獲取
網(wǎng)站地址:http://m.5511xx.com/article/cojjdhd.html