[英]@Import vs @ContextConfiguration in Spring
注釋的使用有什么不同嗎? 這兩個注釋都允許使用多個@Configuration
類來創建一個ApplicationContext
。 從他們的文檔@ContextConfiguration
似乎更適合測試配置並且來自測試的工件( spring-test
),但是,我還沒有發現實際的區別。
感謝您的任何想法!
@Import
和@ContextConfiguration
是不同的使用情況,不能互換使用。
@Import
僅對導入其他@Configuration
文件有用,並且僅在@Configuration
類上有用(和 afaik)和功能。 將@Import
放在測試類上時,它將不會被處理,因為它不會被處理。
@Configuration
@Import(PersistenceConfig.class)
public class MainConfig {}
例如,如果您禁用了@Configuration
類的組件掃描,或者您需要組件掃描未涵蓋的包中的@Configuration
類,則使用@Import
會很有用。
注意:還有@ImportResource
對舊的基於 XML 的配置文件執行相同的操作。
反過來對@ContextConfiguration
有效,因為它僅對基於 Spring 的測試類有用(使用SpringRunner
for jUnit 4 運行的測試)。 它用於為測試提供配置參數以組成測試配置。 它可以是 XML、javaconfig(或它們的組合)的集合。
@RunWith(SpringRunner.class)
@ContextConfiguration( {MainConfig.class, TestConfig.class})
public MyTest {}
它還允許指定用於加載這些配置的內容(等等)。
在 Spring Boot @Import(SomeConfiguration.class)
配置類添加到現有上下文中。 它對測試切片很有用:
@DataJpaTest
@Import(SomeConfiguration.class)
class TestSomething(){...}
在這里,您可以從 SomeConfiguration 類訪問存儲庫和 bean。
@ContextConfiguration(classes = SomeConfiguration.class)
意味着只使用這個配置,它不能與例如一起使用。 DataJpaTest
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.