我正在使用@ContextConfiguration
註釋來管理我的應用程序中的配置。創建這些配置以便它們只提供由給定模塊公開的bean。由於這個原因,給定模塊使用的一些bean不一定是直接導入的。例如:可以影響@ContextConfiguration中配置類的初始化順序嗎?
configuration --(use)--> module1 --(cannot @Import)--> database
\-(use)--------------------------------> database
在也就是說,configuration
使用module1
這需要(但不能直接導入)數據庫配置。因此,configuration
也使用database
模塊。
但它看起來像導入解決的順序是非常隨機的。即使我用
@ContextConfiguration(classes={DatabaseConfig.class, Module1Config.class})
這將導致不確定的失敗在初始化(NoSuchBeanDefinitionException
)。
是否有任何方式來影響bean初始化的順序?或者我應該創建一個覆蓋配置,沿着依賴配置嗎?但是在這種情況下,同樣的問題適用於@Import
,因爲它必須確保加載依賴關係的順序。
不幸的是,@DependsOn註釋只是使依賴顯式化,但不會導致回溯從其他配置中加載丟失的bean。 – allprog
你嘗試解決什麼樣的實際問題,以及爲什麼你的依賴bean不應該被描述爲依賴配置(可能通過接口)? –
如果我將DB配置包含在使用它的模塊的配置中,那麼將該數據庫定義更改爲其他內容是不可能的。例如,如果我想將我的單元測試集中到更高級別的模塊上,我會盡量避免加載數據庫,並嘗試儘快中斷依賴關係樹。要麼爲測試和生產創建不同的配置,要麼以專注的方式創建配置,並避免它們之間的導入依賴關係,這種方式在測試中可以選擇我加載的內容。 – allprog