spring容器載入bean的順序是不肯定的,spring框架沒有約定特定的順序邏輯。但spring保證若是A依賴B(如beanA中有@Autowired beanB的變量),那麼B將先於A被加載。但若是beanA不直接依賴B,將如何讓B仍然先加載呢?spring
可能有些場景中,bean A 間接依賴 bean B。如Bean B應該須要更新一些全局緩存,可能經過單例模式實現且沒有在spring容器註冊,bean A須要使用該緩存;所以,若是bean B沒有準備好,bean A沒法訪問。緩存
另外一個場景中,bean A是事件發佈者(或JMS發佈者),bean B (或一些) 負責監聽這些事件,典型的如觀察者模式。咱們不想B 錯過任何事件,那麼B須要首先被初始化。框架
簡言之,有不少場景須要bean B應該被先於bean A被初始化,從而避免各負面影響。咱們能夠在bean A上使用@DependsOn註解,告訴容器bean B應該先被初始化。spa