gpt4 book ai didi

java - 无法在 java 匹配中加载属性-

转载 作者:行者123 更新时间:2023-11-30 10:10:48 25 4
gpt4 key购买 nike

尝试在 spring 中实现有条件的 bean 加载。这是代码,问题是,我无法在匹配方法中加载属性,

@Configuration
public class Class implements Condition {

@Value("${test.property}")
private boolean testProperty;

@Override
public boolean matches(ConditionContext conditionContext,
AnnotatedTypeMetadata annotatedTypeMetadata) {
sout(testProperty);
return true;
}

}

但是,如果我将它注入(inject)到构造函数中,我可以打印该属性,但这并不能解决我的问题,有什么想法吗?

最佳答案

对于基于环境变量 的条件实例化,您可以使用 @ConditionalOnProperty在你的 bean 定义之上的注解。

@Configuration
public class Config {

@Bean
@ConditionalOnProperty(name = "your.property", havingValue = "true")
public YourBean instantiateIfTrue() {
// instantiate and return YourBean in case the property is true
}

@Bean
@ConditionalOnProperty(name = "your.property", havingValue = "false")
public YourBean instantiateIfFalse() {
// instantiate and return YourBean in case the property is false
}

}

在您的情况下,您可以添加 @ConditionalOnProperty在你的 @Configuration 之上(并且不再扩展 Condition )。

@Configuration
@ConditionalOnProperty(name = "your.property", havingValue = "true")
public class Config {

// ...

}

依赖扩展Condition仅当@ConditionalOnProperty对于您的用例而言不够灵活。

关于java - 无法在 java 匹配中加载属性-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52710364/

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