弹簧靴 2.1 豆覆盖与主
使用Spring Boot 2.1,默认情况下禁用了bean覆盖,这是一件好事。
但是,我确实有一些测试,其中我使用Mockito用模拟实例替换bean。使用默认设置,具有此类配置的测试将由于 Bean 覆盖而失败。
我发现唯一可行的方法是通过应用程序属性启用Bean覆盖:
spring.main.allow-bean-definition-overriding=true
但是,我真的想确保为我的测试配置设置最少的bean定义,这将在禁用覆盖的情况下由spring指出。
我覆盖的豆子是
- 在导入到我的测试配置中的另一个配置中定义
- 通过注释扫描自动发现豆子
我所想的应该在测试配置中工作,覆盖bean并在其上打一个,就像我们习惯于数据源配置一样。然而,这没有任何效果,让我想知道:和残疾豆子是否矛盾?@Primary
@Primary
一些例子:
package com.stackoverflow.foo;
@Service
public class AService {
}
package com.stackoverflow.foo;
public class BService {
}
package com.stackoverflow.foo;
@Configuration
public BaseConfiguration {
@Bean
@Lazy
public BService bService() {
return new BService();
}
}
package com.stackoverflow.bar;
@Configuration
@Import({BaseConfiguration.class})
public class TestConfiguration {
@Bean
public BService bService() {
return Mockito.mock(BService.class);
}
}