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。希望對你有點幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4662/viewspace-2826789/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Groovy獲取Bean兩種方式(奇淫技巧操作)Bean
- Spring在程式碼中獲取bean的幾種方式SpringBean
- Spring6 當中 獲取 Bean 的四種方式SpringBean
- 在專案中獲取Spring的Bean的幾種方式SpringBean
- 兩種啟動資料庫的方式資料庫
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- spring bean別名的兩種配置方式SpringBean
- Python訪問Oracle的兩種資料獲取方式PythonOracle
- Qt獲取當前時間的兩種方式筆記QT筆記
- springboot2.0 獲取啟動埠號Spring Boot
- [筆記] nginx 兩種方式 啟動 重啟 停止 升級筆記Nginx
- Spring注入Bean的四種方式,看這一篇就夠了SpringBean
- springboot使用webSocket的兩種方式Spring BootWeb
- 獲取cookie的3種方式Cookie
- 2、Spring4之Bean的兩種配置方式SpringBean
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- 【Java面試】Spring中有哪些方式可以把Bean注入到IOC容器?Java面試SpringBean
- win10啟動項哪些可以禁止_win10啟動項哪些可以關閉Win10
- servlet中手動獲取spring的beanServletSpringBean
- 《SpringBoot篇:002》《SpringBoot的三種啟動方式:main、Maven、jar》Spring BootAIMavenJAR
- javascript獲取url地址的幾種方式JavaScript
- redis的php驅動兩種方式RedisPHP
- 在springboot中使用Mybatis Generator的兩種方式Spring BootMyBatis
- Java類獲取spring 容器的bean的5種方法JavaSpringBean
- PG獲取檔案大小的幾種方式
- Java中獲取Class物件的三種方式Java物件
- mysql啟動的四種方式MySql
- Mysql的四種啟動方式MySql
- IOS檢測晃動的兩種方式iOS
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- SpringBoot 使用ApplicationContext 及 getbean的兩種方式Spring BootAPPContextBean
- SpringBoot讀取配置資料的幾種方式Spring Boot
- 獲取spring裡的beanSpringBean
- 安卓啟動時間獲取安卓
- 398、Java框架52 -【Hibernate - 分頁、兩種獲取方式】 2020.10.27Java框架
- 線上直播原始碼,VUE 獲獎名單滾動顯示的兩種方式原始碼Vue
- 定時啟動執行在 WPS 上的業務流程的兩種方式
- JS獲取元素寬高的兩種情況JS