[英]@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.