回答
如果豆甲通過定義<property/>
,或@Autowired
然後<constructor-arg/>
的順序取決於豆乙由Spring容器被迫並固定。這裏沒問題。
但是,如果要強制執行bean創建的特定順序未表示通過顯式依賴隨意使用:
<bean id="A" depends-on="B"/>
<bean id="B"/>
或更好的(與註釋,還與@Bean
Java配置):
@Service
@DependsOn("B")
public class A {}
甚至更好...不要使用它。這些構造是一種代碼氣味,並且經常表明你的組件之間有一些令人討厭的不可見依賴。
+1代碼異味說明 – ElderMael
您可以使用bean上的Ordered接口定義相對於其他bean的順序。
同意Tomasz提供的答案。如果你知道bean A依賴於bean B,那麼這是正確的方法。
有時你應該在所有bean實例化之前執行邏輯。在這種情況下,您可以使用BeanFactoryPostProcessor。 Spring首先創建並執行BeanFactoryPostProcessor,然後創建並執行所有其他bean。同時,如果你的BeanFactoryPostProcessor依賴於某個bean A,你可以使用屬性或構造函數注入。在這種情況下,Spring將首先創建bean A,然後是BeanFactoryPostProcessor,然後調用BeanFactoryPostProcessor,之後只會在上下文中安裝所有其他bean。
我用它從系統屬性文件設置spring.active.profile設置。很棒! –
- 1. Spring bean實例化排序
- 2. 如何實例化泛型spring bean?
- 3. 無法從託管bean實例化Spring Bean,Spring + JSF
- 4. 在Spring MVC中使用工廠模式實例化bean 3
- 5. 何時讓Spring實例化一個bean?
- 6. Spring中的Bean實例化通知
- 7. 收集的Spring bean實例化異常
- 8. 實例化春bean對象
- 9. 如何從Spring獲取實例化bean的列表?
- 10. Spring 3 - 停止序列化自動佈線的bean
- 11. Spring:序列化引用了不可序列化bean的對象
- 12. 上下文混淆 - Spring實例化單例bean兩次
- 13. SpringApplication無法實例化bean
- 14. 無法實例化bean類
- 15. 如何激活所有存在的spring實例化spring bean
- 16. bean實例化失敗;嵌套異常是org.springframework.beans.BeanInstantiationException:無法實例化Bean類
- 17. 通過反序列化創建Spring bean
- 18. JavaServer Faces Bean實例化順序
- 19. 是否有可能使Spring僅在繼承中實例化父bean(而不是實例化子bean)?
- 20. SpringMvc實例化Bean - Singleton
- 21. 無法實例化bean類[org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]
- 22. 序言列表實例化
- 23. 定製的bean的實例化邏輯
- 24. Spring 3應用程序實例化Tomcat提供的類
- 25. BeanInstantiationException:無法實例化bean類[org.springframework.security.config.SecurityNamespaceHandler]
- 26. 未實例化會話範圍的bean
- 27. 日誌彈簧bean實例化
- 28. 無法反序列化Spring 3中START_ARRAY令牌的對象實例REST Webservice
- 29. 正在創建Spring多個bean實例
- 30. Java Spring Bean中的實例變量
在我的練習中,實例化順序等於xml配置文件中的順序。但是可能有例外。 –