在我的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>
在我的服务中,我想@Autowired基于spring配置文件的bean。我正在根据下面的内容尝试基于活动的spring概要文件定义限定符名称,但它给出了一个错误:找不到带有限定符的bean。在springMVC中,在这种情况下我如何处理限定符名称。请告知。
@Autowired
@Qualifier("validationFlag-${spring.profiles.active}")
Boolean validationFlag;
您没有正确使用配置文件。您应该实例化一个bean,而不是每个概要文件的每个bean,并根据活动的概要文件来执行此操作。
例如:
<beans profile="dev">
<bean id="validationFlag" class="java.lang.Boolean">
<constructor-arg value="false"/>
</bean>
</beans>
然后就这样自动布线:
@Autowired
@Qualifier("validationFlag")
Boolean validationFlag;
在您的情况下,更简单的解决方案可能是将此标志添加为属性。
只需为每个配置文件创建属性文件
例如,对于dev配置文件,创建application-dev.properties和设置属性validation.flag=false
要检索此标志,请使用
@Value("{validation.flag}") Boolean validFlag;