Spring не может разрешить свойство заполнителя из файла свойств по умолчанию

Я искал на stackru, но я не вижу решения для моего варианта использования.

Я сталкиваюсь с проблемой, когда пытаюсь добавить файл общих свойств для значений по умолчанию

В настоящее время у нас есть только файлы свойств среды в 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}"

Обратите внимание: могу успешно ссылаться на свойство, определенное в файле свойств по умолчанию, в качестве аргумента конструктора для bean-компонента, определенного в app-context.xml. Я сталкиваюсь с этой проблемой только тогда, когда я пытаюсь ссылаться на нее в классе, используя @Value

Цените любые мысли или идеи. Спасибо

Обновлен по комментарию. Я получаю доступ к свойству по значению, как это @Value ("$ {is_feature_enabled}")

0 ответов

Другие вопросы по тегам