混合 XML、Groovy 腳本和組件類別
有時可能需要混合 XML 組態檔、Groovy 腳本和組件類別(通常是 @Configuration
類別),以為您的測試配置 ApplicationContext
。例如,如果您在生產環境中使用 XML 組態,您可以決定使用 @Configuration
類別來為您的測試配置特定的 Spring 管理組件,反之亦然。
此外,某些第三方框架(例如 Spring Boot)提供一流的支援,可同時從不同類型的資源載入 ApplicationContext
(例如,XML 組態檔、Groovy 腳本和 @Configuration
類別)。Spring Framework 歷史上並未在標準部署中支援此功能。因此,Spring Framework 在 spring-test
模組中交付的大多數 SmartContextLoader
實作,每個測試 Context 僅支援一種資源類型。但是,這並不表示您不能同時使用兩者。一般規則的一個例外是 GenericGroovyXmlContextLoader
和 GenericGroovyXmlWebContextLoader
同時支援 XML 組態檔和 Groovy 腳本。此外,第三方框架可能會選擇透過 @ContextConfiguration
支援宣告 locations
和 classes
,並且透過 TestContext Framework 中的標準測試支援,您有以下選項。
如果您想要使用資源位置(例如,XML 或 Groovy)和 @Configuration
類別來配置您的測試,您必須選擇其中一個作為進入點,並且該進入點必須包含或匯入另一個。例如,在 XML 或 Groovy 腳本中,您可以使用組件掃描或將 @Configuration
類別定義為一般 Spring Bean 來包含它們,而在 @Configuration
類別中,您可以使用 @ImportResource
來匯入 XML 組態檔或 Groovy 腳本。請注意,此行為在語意上等同於您在生產環境中配置應用程式的方式:在生產組態中,您定義一組 XML 或 Groovy 資源位置,或一組 @Configuration
類別,您的生產環境 ApplicationContext
從中載入,但您仍然可以自由地包含或匯入其他類型的組態。