gpt4 book ai didi

java - @ConditionalOnProperty 用于多值属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:31 25 4
gpt4 key购买 nike

有什么方法可以使用基于多值属性的@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();
}

和application.yaml

prop: 
- a
- b

我希望这两个 bean:bean1 和 bean2 都将在 spring 上下文中注册,但其中没有一个未注册。有什么办法吗?

最佳答案

您可以使用 Spring Boot @ConditionalOnExpression 注释,不仅在 @bean-annotated 方法中,还可以直接在类上使用:

@ConditionalOnExpression("${my.prop}")
@Component
class SomeBean1 implements SomeBean {}

@ConditionalOnExpression("!${my.prop}")
@Component
class SomeBean2 implements SomeBean {}

话虽如此,我个人更喜欢使用纯 Java:

@Value("${my.prop}") String myProp;
...
@Bean SomeBean someBean() {
if ("abc".equals(myProp)) {return new SomeBean1();} else {return new SomeBean2();}
}

关于java - @ConditionalOnProperty 用于多值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com