🧑💻 Скрытая возможность конфигурации Spring Boot, о которой мало говорят
Представим, что у вас есть общий стартер, который подключён к десяткам сервисов. Вы хотите задать в нём общие свойства по умолчанию, но сохранить за каждым сервисом возможность переопределить их в собственной конфигурации.
Положить ещё один application.yml в библиотеку кажется очевидным решением. На практике Spring Boot не объединяет два таких файла так, как можно было бы ожидать. Профиль требует ручной активации в каждом сервисе, @PropertySource имеет неудобный приоритет, а конфигурация через бины появляется слишком поздно для части настроек.
Для этой задачи в Spring Boot есть отдельный механизм: EnvironmentPostProcessor. Он позволяет изменить Environment ещё до создания ApplicationContext, выбрать приоритет источника свойств и при необходимости прочитать, дополнить или переопределить уже существующую конфигурацию.
В новой статье от наших друзей из Axelix мы разберем на реалном примере, как зарегистрировать такой процессор, почему порядок его выполнения критически важен, и какие у него есть ограничения.
🔗 Вот сама статья.
Представим, что у вас есть общий стартер, который подключён к десяткам сервисов. Вы хотите задать в нём общие свойства по умолчанию, но сохранить за каждым сервисом возможность переопределить их в собственной конфигурации.
Положить ещё один application.yml в библиотеку кажется очевидным решением. На практике Spring Boot не объединяет два таких файла так, как можно было бы ожидать. Профиль требует ручной активации в каждом сервисе, @PropertySource имеет неудобный приоритет, а конфигурация через бины появляется слишком поздно для части настроек.
Для этой задачи в Spring Boot есть отдельный механизм: EnvironmentPostProcessor. Он позволяет изменить Environment ещё до создания ApplicationContext, выбрать приоритет источника свойств и при необходимости прочитать, дополнить или переопределить уже существующую конфигурацию.
В новой статье от наших друзей из Axelix мы разберем на реалном примере, как зарегистрировать такой процессор, почему порядок его выполнения критически важен, и какие у него есть ограничения.
🔗 Вот сама статья.