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
- Spring6 當中 獲取 Bean 的四種方式SpringBean
- Spring在程式碼中獲取bean的幾種方式SpringBean
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- springboot2.0 獲取啟動埠號Spring Boot
- springboot使用webSocket的兩種方式Spring BootWeb
- 《SpringBoot篇:002》《SpringBoot的三種啟動方式:main、Maven、jar》Spring BootAIMavenJAR
- 398、Java框架52 -【Hibernate - 分頁、兩種獲取方式】 2020.10.27Java框架
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- Spring注入Bean的四種方式,看這一篇就夠了SpringBean
- Ubuntu18.4啟動IntelliJ IDEA 2020.2.2兩種方式UbuntuIntelliJIdea
- SpringBoot 使用ApplicationContext 及 getbean的兩種方式Spring BootAPPContextBean
- Spring - 獲取ApplicationContext的幾種方式SpringAPPContext
- 在springboot中使用Mybatis Generator的兩種方式Spring BootMyBatis
- 【Java面試】Spring中有哪些方式可以把Bean注入到IOC容器?Java面試SpringBean
- SpringBoot讀取配置資料的幾種方式Spring Boot
- 獲取spring裡的beanSpringBean
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- SpringBoot EL獲取系統中變數的方式Spring Boot變數
- @FeignClient @Resource 無法注入Bean Springboot無法啟動clientBeanSpring Boot
- Java中獲取Class物件的三種方式Java物件
- PG獲取檔案大小的幾種方式
- Spring注入Bean的幾種方式SpringBean
- win10啟動項哪些可以禁止_win10啟動項哪些可以關閉Win10
- Spring原始碼剖析4:其餘方式獲取Bean的過程分析Spring原始碼Bean
- JS獲取元素寬高的兩種情況JS
- 獲取或操作DOM元素特性的幾種方式
- IOS 自動化,幾種特殊情況下 UI 元素獲取的方式iOSUI
- SpringBoot獲取配置檔案,就這麼簡單。Spring Boot
- [springboot]一啟動就自動停止了Spring Boot
- spring註冊bean的幾種方式SpringBean
- Spring中bean的四種注入方式SpringBean
- Spring Bean的3種裝配方式SpringBean
- 據說這個方法可以獲取CSDN積分
- flowable 啟動流程的三種方式
- 線上直播原始碼,VUE 獲獎名單滾動顯示的兩種方式原始碼Vue
- 兩種方式實現橫向滾動條
- 動態代理的兩種方式以及區別