當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring 使用注解@DependsOn控制Bean加载顺序
生活随笔
收集整理的這篇文章主要介紹了
Spring 使用注解@DependsOn控制Bean加载顺序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 前言
- 2. 代碼實現
1. 前言
默認情況下,Spring加載Bean的順序是不確定的(或者可以理解為,按編譯后的class文件順序加載)。當我們需要控制Bean加載順序以滿足特定的需求時,@DependsOn就派上用場了。
假設需求場景:C類加載時要從緩存讀取數據,D類加載時會初始化緩存數據。因此,我們必須控制D類優先加載,否則C讀到的緩存會是空的。
2. 代碼實現
先驗證沒有加 @DependsOn 的效果
創建緩存類 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);} }創建 C 類,并在構造函數讀取 MyCache:
@Component public class C {public C(){System.out.println("name:" + MyCache.get("name"));} }創建 D 類,并在構造函數初始化 MyCache:
@Component public class D {public D(){MyCache.set("name", "fuhb");} }啟動程序,這時會輸出空的數據:
name:null這明顯不符合我們的需求,因此修改 C 類,增加 @DependsOn 注解
@Component @DependsOn(value = { "d" }) public class C {public C(){System.out.println("name:" + MyCache.get("name"));} }重新啟動程序,正常讀取了MyCache的數據,說明D優先于C加載
name:fuhb總結
以上是生活随笔為你收集整理的Spring 使用注解@DependsOn控制Bean加载顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring @Import 注解使用详
- 下一篇: Java源码解析:ArrayList 和