自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你的Springboot應(yīng)用到底啟動了哪些bean?這兩種方式可以幫你獲取

開發(fā) 前端
在本文中,我們將探索在容器中獲取所有spring管理的bean的相關(guān)技術(shù)。這有神馬用?主要是用于排查問題。一般都是我們創(chuàng)建的某一個bean沒有啟動的問題。畢竟工作中總是會遇到各種各樣的bug。提前了解一些沒有壞處。

[[374511]]

1. 概述

在本文中,我們將探索在容器中獲取所有spring管理的bean的相關(guān)技術(shù)。這有神馬用?主要是用于排查問題。一般都是我們創(chuàng)建的某一個bean沒有啟動的問題。畢竟工作中總是會遇到各種各樣的bug。提前了解一些沒有壞處。

2. IoC容器

bean是spring管理的應(yīng)用程序的基礎(chǔ),所有bean都駐留在IOC容器中,該容器負(fù)責(zé)管理它們的生命周期。

我們可以通過兩種方式獲取該容器內(nèi)所有bean的列表:

  • 使用ListableBeanFactory接口
  • 使用Spring Boot Actuator

3.使用ListableBeanFactory接口

ListableBeanFactory接口提供了getBeanDefinitionNames()方法,該方法返回在這個工廠中定義的所有bean的名稱。您可以在官方文檔中找到所有已知子接口及其實現(xiàn)類的列表。我們來看這種方式如何獲取所有的bean。

第一步:創(chuàng)建一個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.     } 

這個Controller依賴于另一個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.     } 

注意,我們在這里創(chuàng)建了兩個不同的bean:

  • fooController
  • fooService

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

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

  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。為了清楚起見,我們在這里省略了它們,因為它們有很多。

4. 使用Spring Boot Actuator

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

第一步:添加依賴

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-actuator</artifactId> 
  4. </dependency> 

第二步:修改application.properties

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

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

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

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

5. 結(jié)論

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

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

 

責(zé)任編輯:武曉燕 來源: 愚公要移山
相關(guān)推薦

2025-01-16 08:38:34

2017-09-25 15:49:01

2011-03-03 10:26:04

Pureftpd

2016-11-07 09:02:02

Malloc內(nèi)存syscall

2021-11-12 14:10:53

IT大數(shù)據(jù)大數(shù)據(jù)應(yīng)用

2013-01-18 11:28:27

應(yīng)用推廣

2019-01-15 18:20:57

2018-02-05 00:02:48

WANSDN網(wǎng)絡(luò)

2022-01-26 00:36:24

vue組件化通信

2009-11-06 12:59:56

WCF服務(wù)通信

2010-03-16 15:38:57

Python串口

2023-11-06 08:20:35

Kubernetesnginx

2010-03-16 15:38:57

Python串口

2021-06-30 07:19:34

SpringBoot定時任務(wù)

2021-05-27 10:57:01

TCP定時器網(wǎng)絡(luò)協(xié)議

2010-08-06 09:38:11

Flex讀取XML

2023-03-29 13:06:36

2009-06-25 13:43:00

Buffalo AJA

2010-10-21 16:24:18

sql server升

2010-09-07 11:09:59

點贊
收藏

51CTO技術(shù)棧公眾號