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工廠中,也就...