基于Spring MVC中的Spring概要文件的Spring Qualifier名称

时间:2018-11-12 16:14:02

标签: java spring spring-mvc spring-data spring-config

在Spring Config中,我定义了以下三个bean。

   <bean id="validationFlag-dev" class="java.lang.Boolean">
        <constructor-arg value="false"/>
    </bean>
    <bean id="validationFlag-test" class="java.lang.Boolean">
        <constructor-arg value="true"/>
    </bean>
    <bean id="validationFlag-prod" class="java.lang.Boolean">
        <constructor-arg value="true"/>
    </bean>

在我的服务中,我想基于spring配置文件@Autowired bean。 我正在尝试按照下面的方法基于活动的弹簧配置文件来定义限定符名称,但是它给出了一个错误,找不到具有限定符的bean。 在春季MVC中,在这种情况下如何处理预选赛名称。请告知。

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

2 个答案:

答案 0 :(得分:0)

您没有正确使用配置文件。您应该实例化一个bean,而不是为每个配置文件实例化每个bean,然后根据哪个配置文件处于活动状态进行实例化。

例如:

<beans profile="dev">
  <bean id="validationFlag" class="java.lang.Boolean">
    <constructor-arg value="false"/>
  </bean>
</beans>

然后以这种方式自动接线:

@Autowired
@Qualifier("validationFlag")
Boolean validationFlag;

答案 1 :(得分:0)

在您的情况下,也许更简单的解决方案是将此标志添加为属性。

只需为每个配置文件创建属性文件。
例如为开发配置文件创建application-dev.properties 并设置属性 validation.flag=false

要检索此标志,请使用

@Value("{validation.flag}") Boolean validFlag;