Spring 中的@Import 与@ContextConfiguration
@Import vs @ContextConfiguration in Spring
注解的用法有什么区别吗?这两个注释都允许使用多个 @Configuration
类 来创建一个 ApplicationContext
。从他们的文档来看 @ContextConfiguration
似乎更适合测试配置,并且来自测试的工件 (spring-test
),但是,我还没有发现实际的区别。
感谢您的任何想法!
@Import
and @ContextConfiguration
用于不同的用例,不能互换使用。
@Import
仅对导入其他 @Configuration
文件有用,并且仅在 @Configuration
class 上有用(和 afaik)和功能。当把 @Import
放在测试 class 上时,它不会很好,因为它不会被处理。
@Configuration
@Import(PersistenceConfig.class)
public class MainConfig {}
使用 @Import
会很有用,例如,如果您禁用了 @Configuration
classes 的组件扫描,或者您需要来自 @Configuration
class组件扫描未涵盖的包。
注意: 还有 @ImportResource
对旧的基于 XML 的配置文件做同样的事情。
反向对 @ContextConfiguration
有效,因为它仅在基于 Spring 的测试 classes 上有用(测试 运行 和 SpringRunner
for jUnit 4).它用于为测试提供配置参数以组成测试配置。它可以是XML、javaconfig(或其组合)的集合。
@RunWith(SpringRunner.class)
@ContextConfiguration( classes = {MainConfig.class, TestConfig.class})
public MyTest {}
它还允许指定使用什么来加载这些配置(以及其他配置)。
在 Spring 引导 @Import(SomeConfiguration.class)
添加 配置 class 到现有上下文。它对测试切片很有用:
@DataJpaTest
@Import(SomeConfiguration.class)
class TestSomething(){...}
在这里,您可以从 SomeConfiguration class.
访问存储库和 bean
@ContextConfiguration(classes = SomeConfiguration.class)
的意思是只使用 这个 配置,它不能用于 eg。 DataJpaTest
.
注解的用法有什么区别吗?这两个注释都允许使用多个 @Configuration
类 来创建一个 ApplicationContext
。从他们的文档来看 @ContextConfiguration
似乎更适合测试配置,并且来自测试的工件 (spring-test
),但是,我还没有发现实际的区别。
感谢您的任何想法!
@Import
and @ContextConfiguration
用于不同的用例,不能互换使用。
@Import
仅对导入其他 @Configuration
文件有用,并且仅在 @Configuration
class 上有用(和 afaik)和功能。当把 @Import
放在测试 class 上时,它不会很好,因为它不会被处理。
@Configuration
@Import(PersistenceConfig.class)
public class MainConfig {}
使用 @Import
会很有用,例如,如果您禁用了 @Configuration
classes 的组件扫描,或者您需要来自 @Configuration
class组件扫描未涵盖的包。
注意: 还有 @ImportResource
对旧的基于 XML 的配置文件做同样的事情。
反向对 @ContextConfiguration
有效,因为它仅在基于 Spring 的测试 classes 上有用(测试 运行 和 SpringRunner
for jUnit 4).它用于为测试提供配置参数以组成测试配置。它可以是XML、javaconfig(或其组合)的集合。
@RunWith(SpringRunner.class)
@ContextConfiguration( classes = {MainConfig.class, TestConfig.class})
public MyTest {}
它还允许指定使用什么来加载这些配置(以及其他配置)。
在 Spring 引导 @Import(SomeConfiguration.class)
添加 配置 class 到现有上下文。它对测试切片很有用:
@DataJpaTest
@Import(SomeConfiguration.class)
class TestSomething(){...}
在这里,您可以从 SomeConfiguration class.
访问存储库和 bean@ContextConfiguration(classes = SomeConfiguration.class)
的意思是只使用 这个 配置,它不能用于 eg。 DataJpaTest
.