Mak*_*huk 6 java spring yaml spring-boot
有什么方法可以使用基于多值属性的@ConditionalOnProperty注释?
弹簧配置:
@Bean
@ConditionalOnProperty(name = "prop", havingValue = "a")
public SomeBean bean1() {
return new SomeBean1();
}
@Bean
@ConditionalOnProperty(name = "prop", havingValue = "b")
public SomeBean bean2() {
return new SomeBean2();
}
Run Code Online (Sandbox Code Playgroud)
和application.yaml
prop:
- a
- b
Run Code Online (Sandbox Code Playgroud)
我希望这两个bean:bean1和bean2都将在spring上下文中注册,但是没有一个未注册。有什么办法吗?
您不仅可以在 @bean 注释的方法中使用 Spring Boot @ConditionalOnExpression 注释,还可以直接在类上使用:
@ConditionalOnExpression("${my.prop}")
@Component
class SomeBean1 implements SomeBean {}
@ConditionalOnExpression("!${my.prop}")
@Component
class SomeBean2 implements SomeBean {}
Run Code Online (Sandbox Code Playgroud)
话虽如此,我个人更喜欢使用纯 Java:
@Value("${my.prop}") String myProp;
...
@Bean SomeBean someBean() {
if ("abc".equals(myProp)) {return new SomeBean1();} else {return new SomeBean2();}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6699 次 |
| 最近记录: |