通过spring config自动连接Bean-特定于环境

时间:2018-11-10 00:37:43

标签: java spring spring-mvc

我正在尝试使用特定于环境的布尔标志。在我的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 emailInUseValidationFlag;

我们可以通过具有特定于环境的属性文件来实现上述要求。但是我不想为一个标志创建三个属性文件。因此,尝试以上方法,我正在使用spring mvc。

2 个答案:

答案 0 :(得分:1)

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

@Value("${blah.blah.flag}")
private Boolean flag;

答案 1 :(得分:0)

将您的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>