我无法让@Profile
使用@Bean
,但它在@Configuration
课程中运行正常。在我的模块测试中,我在第一个示例中正确地获得了MyServiceStub
自动装配,但在第二个示例中没有。
有谁知道为什么?
这有效:
MyConfig.java
@Configuration
@Import({StubConfig.class, RealConfig.class}
public class MyConfig {}
StubConfig.java
@Profile({"featureTest", "moduleTest"})
@Configuration
public class StubConfig {
@Bean
public MyService myService() {
return new MyServiceStub();
}
}
RealConfig.java
@Profile({"!featureTest", "!moduleTest"})
@Configuration
public class RealConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
但这不起作用:
MyConfig.java
@Configuration
public class MyConfig {
@Bean
@Profile({"featureTest", "moduleTest"})
public MyService myServiceStub() {
return new MyServiceStub();
}
@Bean
@Profile({"!featureTest", "!moduleTest"})
public MyService myService() {
return new MyService();
}
}
答案 0 :(得分:-2)
您可以尝试使用@Conditional来创建conditional bean,而不是使用@Profile方法。
或明确if-stmt
来检查activeProfile是什么。您可以根据activeProfile创建Bean实例。我认为这种方法可以反映使用表达式语言在Spring XML中可以完成的工作。但@Conditional似乎更适合你。