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