您好,登錄后才能下訂單哦!
本篇文章為大家展示了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沒有配置,所以顯示的比較亂。
上述內容就是Springboot應用到底啟動了哪些bean,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。