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

Spring如何使用注解@DependsOn控制Bean加載順序

 更新時(shí)間:2025年06月20日 15:37:04   作者:°Fuhb  
這篇文章主要介紹了Spring如何使用注解@DependsOn控制Bean加載順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 前言

默認(rèn)情況下,Spring加載Bean的順序是不確定的(或者可以理解為,按編譯后的class文件順序加載)。當(dāng)我們需要控制Bean加載順序以滿足特定的需求時(shí),@DependsOn就派上用場了。

假設(shè)需求場景:

C類加載時(shí)要從緩存讀取數(shù)據(jù),D類加載時(shí)會(huì)初始化緩存數(shù)據(jù)。因此,我們必須控制D類優(yōu)先加載,否則C讀到的緩存會(huì)是空的。

2. 代碼實(shí)現(xiàn)

先驗(yàn)證沒有加 @DependsOn 的效果

創(chuàng)建緩存類 MyCache

public class MyCache {
	private static Map<String, Object> cache = new HashMap<>();

	public static Object get(String key){
		return cache.get(key);
	}

	public static void set(String key, Object value){
		cache.put(key, value);
	}
}

創(chuàng)建 C 類,并在構(gòu)造函數(shù)讀取 MyCache:

@Component
public class C {

	public C(){
		System.out.println("name:" + MyCache.get("name"));
	}
}

創(chuàng)建 D 類,并在構(gòu)造函數(shù)初始化 MyCache:

@Component
public class D {
	public D(){
		MyCache.set("name", "fuhb");
	}
}

啟動(dòng)程序,這時(shí)會(huì)輸出空的數(shù)據(jù):

name:null

這明顯不符合我們的需求,因此修改 C 類,增加 @DependsOn 注解

@Component
@DependsOn(value = { "d" })
public class C {

	public C(){
		System.out.println("name:" + MyCache.get("name"));
	}
}

重新啟動(dòng)程序,正常讀取了MyCache的數(shù)據(jù),說明D優(yōu)先于C加載

name:fuhb

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java之MyBatis的Dao方式以及Dao動(dòng)態(tài)代理詳解

    Java之MyBatis的Dao方式以及Dao動(dòng)態(tài)代理詳解

    這篇文章主要介紹了Java之MyBatis的Dao方式以及Dao動(dòng)態(tài)代理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java中接口和抽象類的異同以及具體的使用場景

    Java中接口和抽象類的異同以及具體的使用場景

    文章主要介紹了Java中接口(Interface)和抽象類(AbstractClass)的區(qū)別和聯(lián)系,包括相同點(diǎn)和不同點(diǎn),以及它們?cè)趯?shí)際開發(fā)中的具體使用場景,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • eclipse創(chuàng)建springboot項(xiàng)目的三種方式總結(jié)

    eclipse創(chuàng)建springboot項(xiàng)目的三種方式總結(jié)

    這篇文章主要介紹了eclipse創(chuàng)建springboot項(xiàng)目的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 關(guān)于Java實(shí)體類Serializable序列化接口的作用和必要性解析

    關(guān)于Java實(shí)體類Serializable序列化接口的作用和必要性解析

    序列化是將對(duì)象狀態(tài)轉(zhuǎn)化為可保持或者傳輸?shù)母袷竭^程,與序列化相反的是反序列化,完成序列化和反序列化,可以存儲(chǔ)或傳輸數(shù)據(jù),一般情況下,在定義實(shí)體類時(shí)會(huì)使用Serializable,需要的朋友可以參考下
    2023-05-05
  • Java細(xì)數(shù)IO流底層原理到方法使用

    Java細(xì)數(shù)IO流底層原理到方法使用

    IO主要用于設(shè)備之間的數(shù)據(jù)傳輸,Java將操作數(shù)據(jù)流的功能封裝到了IO包中,這篇文章主要給大家介紹了關(guān)于Java新手學(xué)習(xí)之IO流簡單使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • spring boot前后端傳參的實(shí)現(xiàn)

    spring boot前后端傳參的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot前后端傳參的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 解決grails服務(wù)端口沖突的辦法(grails修改端口號(hào))

    解決grails服務(wù)端口沖突的辦法(grails修改端口號(hào))

    grails中默認(rèn)的服務(wù)端口為8080,當(dāng)本機(jī)中需要同時(shí)啟動(dòng)兩個(gè)不同的項(xiàng)目時(shí),就會(huì)造成端口沖突,下面給出解決方法
    2013-12-12
  • Java 合并多個(gè)MP4視頻文件

    Java 合并多個(gè)MP4視頻文件

    這篇文章主要介紹了Java 合并多個(gè)MP4視頻文件的方法,幫助大家利用Java處理視頻,提高辦公效率,感興趣的朋友可以了解下
    2020-11-11
  • Java中的collection集合類型總結(jié)

    Java中的collection集合類型總結(jié)

    Java的集合類型都是對(duì)java.util包中Collection接口的繼承,這里我們主要介紹依賴于collection的一些主分支,一起來看一下Java中的collection集合類型總結(jié)
    2016-05-05
  • 詳解Spring Batch 輕量級(jí)批處理框架實(shí)踐

    詳解Spring Batch 輕量級(jí)批處理框架實(shí)踐

    這篇文章主要介紹了詳解Spring Batch 輕量級(jí)批處理框架實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論

麦盖提县| 安达市| 汾西县| 曲沃县| 彰武县| 尉氏县| 兴化市| 鄂托克旗| 砀山县| 威远县| 崇信县| 南丹县| 诏安县| 行唐县| 奎屯市| 枝江市| 双城市| 越西县| 鄱阳县| 晋州市| 宁城县| 万安县| 富源县| 阳曲县| 蒲城县| 渭南市| 揭西县| 邵阳市| 滕州市| 侯马市| 怀柔区| 三亚市| 河北区| 西华县| 闽侯县| 贡山| 丰都县| 南康市| 河北区| 无锡市| 彭阳县|