最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot 使用 @Configuration 集中管理 Bean的實戰(zhàn)步驟

 更新時間:2026年04月18日 09:12:08   作者:河阿里  
在 SpringBoot 中,@Configuration 注解是專門用來集中管理 Bean 的核心方案,它可以替代傳統(tǒng) XML 配置文件,本文給大家介紹SpringBoot使用@Configuration集中管理 Bean的實戰(zhàn)步驟,感興趣的朋友跟隨小編一起看看吧

在 SpringBoot 中,@Configuration 注解是專門用來集中管理 Bean 的核心方案,它可以替代傳統(tǒng) XML 配置文件,將所有第三方 Bean、自定義 Bean 統(tǒng)一在配置類中創(chuàng)建、管理,實現(xiàn) Bean 的集中化、模塊化管理。

一、核心概念

  1. @Configuration:標(biāo)記一個類為配置類,SpringBoot 啟動時會自動掃描并加載這個類,替代 XML 配置文件。
  2. @Bean:寫在配置類的方法上,方法的返回值就是一個 Bean 對象,方法名默認(rèn)是 Bean 的名稱。
  3. 優(yōu)勢:集中管理所有 Bean、支持依賴注入、支持配置屬性注入、代碼可讀性強(qiáng)、便于維護(hù)。

二、實戰(zhàn)步驟

1. 基礎(chǔ)環(huán)境

SpringBoot 項目(無需額外依賴,核心容器已包含 @Configuration

2. 創(chuàng)建統(tǒng)一配置類

創(chuàng)建 config 包,編寫配置類,集中注冊所有需要的 Bean(自定義對象、第三方工具類等)。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 全局Bean配置類:集中管理所有Bean對象
 */
@Configuration // 核心注解:標(biāo)記為配置類
public class GlobalBeanConfig {
    // ==================== 1. 管理自定義 Bean ====================
    /**
     * 創(chuàng)建自定義 UserService Bean(也可以用 @Service 注解,這里演示配置類方式)
     * @return Bean 對象
     */
    @Bean // 方法名 userService 就是 Bean 的名稱
    public UserService userService() {
        return new UserService();
    }
    // ==================== 2. 管理第三方工具類 Bean ====================
    /**
     * 注冊線程池 Bean(第三方類,無法加 @Component,必須用配置類管理)
     */
    @Bean
    public ExecutorService threadPool() {
        return Executors.newFixedThreadPool(5);
    }
    // ==================== 3. 帶依賴注入的 Bean ====================
    /**
     * 創(chuàng)建 OrderService Bean,依賴上面的 userService Bean
     */
    @Bean
    public OrderService orderService(UserService userService) { // 自動注入已注冊的 Bean
        OrderService orderService = new OrderService();
        // 手動注入依賴
        orderService.setUserService(userService);
        return orderService;
    }
}

3. 配套的業(yè)務(wù)類(無注解,純Java類)

// 自定義業(yè)務(wù)類(無需加 @Service/@Component,由配置類統(tǒng)一注冊)
public class UserService {
    public String getUserInfo() {
        return "用戶信息:集中管理的Bean";
    }
}
public class OrderService {
    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String getOrderInfo() {
        return "訂單信息,依賴:" + userService.getUserInfo();
    }
}

4. 測試使用集中管理的 Bean

直接通過 @Autowired 注入配置類中注冊的 Bean 即可使用:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class TestController {
    // 注入配置類中創(chuàng)建的 Bean
    @Resource
    private UserService userService;
    @Resource
    private OrderService orderService;
    @Resource
    private ExecutorService threadPool;
    @GetMapping("/test")
    public String test() {
        // 測試自定義Bean
        System.out.println(userService.getUserInfo());
        // 測試依賴注入的Bean
        System.out.println(orderService.getOrderInfo());
        // 測試第三方Bean
        threadPool.execute(() -> System.out.println("線程池Bean執(zhí)行成功"));
        return "Bean 集中管理測試成功";
    }
}

三、高級用法

1. 給 Bean 指定名稱(默認(rèn)是方法名)

@Bean(name = "customUserService") // 指定Bean名稱
public UserService userService() {
    return new UserService();
}

注入時指定名稱:

@Resource(name = "customUserService")
private UserService userService;

2. 配置多環(huán)境/模塊化管理Bean

可以拆分多個配置類,按模塊管理:

  • DataSourceConfig:管理數(shù)據(jù)庫連接池 Bean
  • ThreadPoolConfig:管理線程池 Bean
  • RedisConfig:管理 Redis 模板 Bean

SpringBoot 會自動掃描所有 @Configuration 類。

3. 讀取配置文件注入 Bean

結(jié)合 @Value 讀取 application.yml 配置,動態(tài)創(chuàng)建 Bean:

  1. application.yml
thread:
  core: 5
  1. 配置類中注入
import org.springframework.beans.factory.annotation.Value;
@Configuration
public class ThreadPoolConfig {
    @Value("${thread.core}")
    private Integer corePoolSize;
    @Bean
    public ExecutorService threadPool() {
        return Executors.newFixedThreadPool(corePoolSize);
    }
}

4. Bean 銷毀方法(資源釋放)

適合線程池、連接池等需要關(guān)閉的 Bean:

@Bean(destroyMethod = "shutdown") // 指定銷毀方法
public ExecutorService threadPool() {
    return Executors.newFixedThreadPool(5);
}

四、總結(jié)

  1. @Configuration = 配置文件:專門用于集中、統(tǒng)一管理 Bean,是 SpringBoot 推薦的無 XML 方案。
  2. @Bean = 注冊 Bean:方法返回值就是 Spring 容器管理的對象。
  3. 適用場景:
    • 無法直接加 @Component 的第三方類(線程池、數(shù)據(jù)源、工具類)
    • 需要自定義創(chuàng)建邏輯的 Bean
    • 需要集中管理所有 Bean,統(tǒng)一維護(hù)
  4. 依賴注入:配置類中方法參數(shù)可以直接注入其他 Bean,Spring 自動匹配。

到此這篇關(guān)于SpringBoot 使用 @Configuration 集中管理 Bean的實戰(zhàn)步驟的文章就介紹到這了,更多相關(guān)SpringBoot @Configuration 管理 Bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot整合swagger3報Unable to infer base url錯誤問題

    springboot整合swagger3報Unable to infer base&nbs

    這篇文章主要介紹了springboot整合swagger3報Unable to infer base url錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot自定義一個Starter的完整代碼

    SpringBoot自定義一個Starter的完整代碼

    文章介紹了SpringBootStarter的開發(fā)流程及核心結(jié)構(gòu),主要包括屬性類綁定配置、提供服務(wù)類、自動配置類創(chuàng)建Bean、注冊自動配置類等步驟,同時,還詳細(xì)解釋了Starter的核心依賴、optional作用、與SpringBoot應(yīng)用的區(qū)別等內(nèi)容,需要的朋友可以參考下
    2026-03-03
  • Java線程在什么情況下可以終止

    Java線程在什么情況下可以終止

    Thread線程類自帶的stop方法,但是jdk不建議使用,因為stop方法終止線程只是強(qiáng)行終止,內(nèi)存中部分值可能已發(fā)生變化,并未保證數(shù)據(jù)的一致性,將會導(dǎo)致線程安全問題,那么在什么情況下可以終止線程呢,本篇帶你探究一下
    2022-04-04
  • Java實現(xiàn)PPT轉(zhuǎn)多種圖片格式的高效方法

    Java實現(xiàn)PPT轉(zhuǎn)多種圖片格式的高效方法

    Java PPT轉(zhuǎn)多種圖片格式:打造高質(zhì)量的文檔轉(zhuǎn)換服務(wù) 在現(xiàn)代企業(yè)應(yīng)用中,文檔處理扮演著至關(guān)重要的角色。無論是 Web端的在線預(yù)覽、移動端的縮略圖生成、內(nèi)容管理系統(tǒng)的文件歸檔,還是數(shù)據(jù)分析平臺的數(shù)據(jù)
    2025-08-08
  • java打印當(dāng)前方法名示例分享

    java打印當(dāng)前方法名示例分享

    在C與C++中可以打印當(dāng)前函數(shù)名,但在Java沒有此說法,一切即對象,得從某個對象中去獲取,下面介紹兩種方式打印當(dāng)前方法名
    2014-02-02
  • 基于Java Tomcat和激活MyEclips的深入理解

    基于Java Tomcat和激活MyEclips的深入理解

    本篇文章是對Java中的Tomcat和激活MyEclips進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • java設(shè)計模式系列之裝飾者模式

    java設(shè)計模式系列之裝飾者模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計模式之裝飾者模式,裝飾者模式是一種結(jié)構(gòu)式模式,感興趣的朋友可以參考一下
    2016-02-02
  • java Gui實現(xiàn)肯德基點餐收銀系統(tǒng)

    java Gui實現(xiàn)肯德基點餐收銀系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java Gui實現(xiàn)肯德基點餐收銀系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 淺談SpringBoot中的@Conditional注解的使用

    淺談SpringBoot中的@Conditional注解的使用

    這篇文章主要介紹了淺談SpringBoot中的@Conditional注解的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • SpringBoot獲取HttpServletRequest的3種方式總結(jié)

    SpringBoot獲取HttpServletRequest的3種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于SpringBoot獲取HttpServletRequest的3種方式,在Spring boot項目中經(jīng)常要用到Servlet的常用對象如HttpServletRequest request,HttpServletResponse response,HttpSession session,需要的朋友可以參考下
    2023-08-08

最新評論

天柱县| 南安市| 汉源县| 巩留县| 皋兰县| 海阳市| 古浪县| 景宁| 阳朔县| 东至县| 巴东县| 靖边县| 四子王旗| 陈巴尔虎旗| 余江县| 丰县| 德保县| 阳新县| 京山县| 治县。| 盈江县| 达州市| 渑池县| 清流县| 濮阳县| 五家渠市| 巴彦县| 长子县| 黎平县| 永仁县| 新营市| 故城县| 德兴市| 宾阳县| 亚东县| 礼泉县| 元朗区| 唐山市| 威海市| 新乡市| 奉节县|