Springboot - несколько файлов свойств для каждого профиля

Ищем лучший подход к настройке нескольких файлов свойств, специфичных для профиля, в приложении Springboot. Ниже приведен пример:

-resources
- application.properties
- dev
- application-dev.properties
- ldap-dev.properties
- quartz-dev.properties
- - etc-dev.properties
- тест
- application-test.properties
- ldap-test.properties
- quartz-test.properties
- etc-test .properties
- prod
- application-prod.properties
- ldap-prod.properties
- quartz-prod.properties
- etc-prod.properties

Файлы application.properties и application-profile.properties загружаются нормально. Я ищу рекомендуемый подход к загрузке других файлов свойств профиля. Я не уверен, есть ли способ загрузить все файлы свойств из папки на основе профиля?


person Gary    schedule 18.11.2014    source источник


Ответы (4)


У вас есть довольно много гибкости со встроенным слушателем конфигурации. Например. Вы можете установить spring.config.name=application,ldap,quartz,etc и spring.config.location=classpath:/,classpath:/dev,classpath:/prod,classpath:/test. Или эквивалентные env vars. Ссылки в ответе Селима документируют базовое поведение и параметры конфигурации.

person Dave Syer    schedule 19.11.2014

Начиная с Spring boot 2.0.4, эта функция выходит из коробки, если вы указываете свой файл конфигурации в переменной среды spring.config.name, например spring.config.name=application,ldap,quartz

person geliba187    schedule 18.04.2019

Я не уверен, что есть лучший способ сделать это, или мое предложение действительно работает, но вы можете попробовать следующее:

Добавьте @PropertySource аннотацию прямо перед классом конфигурации

@PropertySource("classpath:ldap-${spring.profiles.active}.properties", "classpath:quartz-${spring.profiles.active}.properties", "classpath:etc-${spring.profiles.active}.properties")

Чтобы лучше понять, как конфигурации загрузки Spring из разных источников и профилей, см. this и это.

Я надеюсь, что это помогает.

person Selim Ok    schedule 19.11.2014

@PropertySources можно использовать для загрузки нескольких файлов свойств с профилем как ldap-${spring.profiles.active}.properties

Но если вы используете YAML, @PropertySource работать не будет. Вы должны использовать @ConfigurationProperty для загрузки файлов YML, отличных от application.yml

person Tal    schedule 07.12.2018