是否有任何方法可以使用基于多值属性的@ConditionalOnProperty注解?
Spring配置:
@Bean
@ConditionalOnProperty(name = "prop", havingValue = "a")
public SomeBean bean1() {
return new SomeBean1();
}
@Bean
@ConditionalOnProperty(name = "prop", havingValue = "b")
public SomeBean bean2() {
return new SomeBean2();
}
和应用程序。
prop:
- a
- b
我既料到豆子:bean 1和bean 2将在spring上下文中注册,但它们中没有一个未注册。
3条答案
按热度按时间kwvwclae1#
您可以使用Sping Boot @ConditionalOnExpression注解,不仅可以在@ bean注解的方法中使用,也可以直接在类上使用:
话虽如此,我个人更喜欢使用纯Java:
7uzetpgm2#
@ConditionalOnProperty似乎没有多值属性。在Spring环境中,它们显示为
我的解决方案是创建我自己的@Conditional扩展,它能够处理多值属性。下面是一个例子。
注解:
条件:
用法:
lsmepo6l3#
havingValue
并不意味着一个对象有这个值,它意味着我们从这个键得到的值是否等于havingValue
。因此,列表对象
prop
既不等于a
,也不等于b
,它等于[a, b]
。