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