0

我正在尝试使用特定于环境的布尔标志。在我的 spring 配置中,我定义了三个特定于环境的 bean,如下所示。

    <bean id="validationFlag-E1" class="java.lang.Boolean.FALSE"/>
    <bean id="validationFlag-E2" class="java.lang.Boolean.TRUE"/>
    <bean id="validationFlag-E3" class="java.lang.Boolean.TRUE"/>

我还在服务器级别定义了“spring.profiles.active”系统属性,其值是基于环境的“E1 /E2 /E3”。

在我的服务中,我正在尝试按照以下方式进行自动装配,但它不起作用并且没有可用的“java.lang.Boolean”类型的合格bean:预计至少有1个符合自动装配候选资格的bean。请给我提意见。

@Autowired
@Qualifier("validationFlag-${spring.profiles.active}")
Boolean evalFlag;

我们可以通过拥有单独的环境特定属性文件来实现上述要求。但我不想为单个标志创建三个属性文件。因此,在我的 spring 框架项目中尝试上述方法。

4

2 回答 2

1

您可以将环境属性${blah.blah.flag}(或您选择的任何名称)与标志(falsetrue)的值一起使用-Dblah.blah.flag=true,然后将该值作为属性注入

@Value("${blah.blah.flag}")
private Boolean flag;
于 2018-11-10T00:57:16.073 回答
1

将您的 bean 定义更改为:

<bean id="validationFlag-E1" class="java.lang.Boolean">
     <constructor-arg value="false"/>
</bean>
    <bean id="validationFlag-E2" class="java.lang.Boolean">
<constructor-arg value="true"/>
</bean>
    <bean id="validationFlag-E3" class="java.lang.Boolean">
<constructor-arg value="true"/>
</bean>
于 2018-11-10T06:57:07.590 回答