我目前正在深入研究@TestConfiguration 我想知道为什么使用这个组合..
@TestConfiguration
public class TestConfig {
// some bean definitions
然后使用
@SpringBootTest
@Import(TestConfig.class)
class UsingImport {
@Autowired
ConfigBean configBean;
// some code
并且在 src/test 中不使用经典的@Configuration, 因为这样做是完全合法的。 为什么@TestConfiguration的真正目的是,因为我们可以用@Configuration做同样的事情?
我错了吗?
@TestConfiguration
和常规 @Configuration
之间的主要区别在于,不会引发默认应用程序上下文。这意味着所有必需的 bean 都可以放置在用 @TestConfiguration
注释的单独类中,并使用此配置而不是标准配置,这将显着减少测试执行时间,因为应用程序上下文仅包含特定测试所需的 bean
标有常用
@Configuration
注释的类会自动包含在应用程序上下文中,因为扫描可以识别此注释。而标有 @TestConfiguration
的类不受扫描影响,您必须手动导入每个测试的配置,从而使您可以灵活地控制该测试所需的 bean 数量