我在stackoverflow上搜索过但我没有看到我的用例的解决方案。
当我尝试为默认值添加公共属性文件时,我遇到了一个问题
目前我们在app-context.xml中只有特定于环境的属性文件,如下所示:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:env_properties/${DEPLOY_ENV}/app.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
我添加了default_app.properties文件,以避免在所有环境中重复属性。变化如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:env_properties/default_app.properties</value>
<value>classpath:env_properties/${DEPLOY_ENV}/app.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
我正在使用类中的@Value注释访问属性 例如:@Value(“$ {is_feature_enabled}”)
在定义特定于环境的属性文件时,这非常有效。但是,仅在default_app.properties文件
中指定属性时,它会引发以下异常例外是
Caused by: org.springframework.beans.factory.BeanCreationException:
Could not autowire field: private boolean
com.XXXXXX.YYY.ZZZZ.SomePackage.SomeClass.is_feature_enabled;
nested exception is java.lang.IllegalArgumentException:
Could not resolve placeholder 'is_feature_enabled' in string value
"${is_feature_enabled}"
请注意:能够成功引用默认属性文件中定义的属性作为app-context.xml中定义的bean的构造函数参数。只有在我尝试使用@Value
在类中引用它时才会遇到此问题欣赏任何想法或见解。感谢
每条评论更新我按照这样的值访问该媒体资源 @value( “$ {is_feature_enabled}”)