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}")