Spring PropertyPlaceholderConfigurer Значение по умолчанию перезаписывает фактическое значение свойства

1

У меня есть компонент, который заполняет свойства, используя аннотацию @Value, подобную этой

@Value("${propbean.value : 'None'}")
private String value;

В моем контексте приложения я имею следующую конфигурацию

<bean id="propbean"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="file:${path}/values.properties"
      p:ignoreResourceNotFound="true"
      p:ignoreUnresolveablePlaceholders="true" />

Когда файл values.properties отсутствует, значения по умолчанию "Нет" устанавливаются как ожидалось, однако, когда присутствует файл свойств, значения по умолчанию все еще используются, хотя я получаю сообщение журнала, в которое загружен файл свойств от PropertyPlaceholderConfigurer

190315 14.23.44,517 {} {} {} INFO  (PropertiesLoaderSupport.java:172) Loading properties file from URL [file:/path/to/file/values.properties]

Мне нужно, чтобы значения по умолчанию вступали в силу только тогда, когда отсутствовал файл свойств и/или заполнители не были разрешимы; не всегда. Я также пытался использовать SPEL, но поскольку это объект PropertyPlaceholderConfigurer, а не для использования директивы, решение SPEL не работает для меня. Я понимаю, что при использовании формата $ {value: default} для заполнителей, что значение по умолчанию заменяется только тогда, когда значение равно null, однако, если я удалю ":" Нет "из замещающего значения, свойство будет правильно разрешено!

Теги:
spring
properties

1 ответ

0

Надеюсь, это поможет кому-то в будущем - проблема заключается в том, что p:ignoreUnresolveablePlaceholders="true" свойство в определении bean-компонента. По-видимому, это инструктирует Spring игнорировать свойства, которые читаются в bean-компоненте, независимо от того, будет ли установлено значение по умолчанию.

Удаление свойства/установка в false устраняет проблему полностью.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню