У меня есть конфигурация загрузки Spring YAML с чем-то вроде
spring:
application:
name: my-app
a: this is literal
b: <<this is external due to special first and last chars>>
Что я пытаюсь сделать, так это добавить какой-то преобразователь, который обнаружит, что значение b
имеет форму <<X>>
, и вызовет извлечение этого значения из внешнего API-интерфейса остатка, чтобы перезаписать в памяти значение, которое было в YAML до он передается компоненту, который содержит конфигурации во время выполнения.
Я попытался использовать EnvironmentPostProcessor
, но потерпел неудачу, потому что не могу получить фактические значения свойств, а только свойства источники, поэтому я не могу выполнить пост-обработку значений.
В настоящее время у меня работает компонент @Configuration
, который содержит поля a
и b
, реализовать что-то в установщиках, чтобы определить, начинается ли значение, которое Spring пытается установить, с <<
и заканчивается >>
, и если да, перезапишите то, что загружается в pojo с версией, которую я получаю из остальных API. Это не идеально, потому что я получаю много дублирования
Как правильно реализовать что-то подобное в Spring 5? Я знаю, что свойства spring поддерживают ссылки на другие свойства с использованием синтаксиса ${a}
, поэтому должен быть какой-то механизм, который уже позволяет добавлять пользовательские преобразователи заполнителей.