Spring控制Bean載入順序

2021-10-20 07:58:51 字數 661 閱讀 2589

spring容器載入bean順序是不確定的,spring框架沒有約定特定順序邏輯規範。

首先要了解depends-on或@dependson作用,是用來表示乙個bean a的例項化依賴另乙個bean b的例項化, 但是a並不需要持有乙個b的物件,如果需要的話就不用depends-on,直接用依賴注入就可以了或者ref標籤。場景

解決方案

a需要持有b物件(註解方式)

@autowired

a需要持有b物件(xml方式)

ref標籤

a不需要持有b物件,只是依賴b的例項化(註解方式)

@dependson

a不需要持有b物件,只是依賴b的例項化(xml方式)

depends-on

但spring保證如果a依賴b(如beana中有@autowired b的變數),那麼b將先於a被載入。但如果beana不直接依賴b,我們如何讓b仍先載入呢?

控制bean初始化順序

可能有些場景中,bean a 間接依賴 bean b。如bean b應該需要更新一些全域性快取,可能通過單例模式實現且沒有在spring容器註冊,bean a需要使用

spring動態載入bean

廢話不多說,直接上 private static final string strs new string protected mapremotes new hashmap for int i 0 i string name one if i 0 beandefinitionbuilder user...

spring載入bean例項化順序

有乙個bean為 a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb 會報錯說nullpointexception,因為這個時候b還沒被set進來,...

Spring載入Bean定義檔案筆記

載入xml定義檔案方式四種 beanfactory bf new xmlbeanfactory new classpathresource spring.xml 意思是beanfactory從xml讀取bean定義的資訊,現在bean工廠還沒有例項化bean,bean是延遲載入到bean工廠中,也就...