Spring无法从默认属性文件中解析占位符属性

时间:2017-10-13 21:23:35

标签: java spring annotations property-files

我在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}”)

0 个答案:

没有答案