Environment Specific application.properties файл в Spring Загрузка приложения
В моем приложении загрузки Spring я хочу создать файл свойств среды. Тип упаковки моего приложения в войне, и я выполняю его во встроенном tomcat. Я использую sts и выполняю main из самого sts.
- Могу ли я иметь файл свойств среды, подобный приложению - ${env-value}.properties?
В приведенном выше случае значение env будет иметь значения как local/devl/test/prod
-
Где установить файл env-value? Для local я могу установить его как аргумент jvm через sts
-
Кто читает application.properties в Spring приложении для загрузки.
-
Как загрузить файл свойств конкретной среды? Например, если я задал базу данных uid, pwd, schema и т.д. В файле свойств среды, в этом случае источник данных сможет понять свойства в нем?
-
Могу ли я использовать файлы application.properties и application-local.properties в то же время?
Ответы
Ответ 1
Spring Загрузка уже имеет поддержку для profile.
Просто добавьте файл application-[profile].properties
и укажите профили, которые будут использоваться с использованием свойства spring.profiles.active
.
-Dspring.profiles.active=local
Это будет загружать application.properties
и application-local.properties
с последними переопределяющими свойствами из первого.
Ответ 2
Да, вы можете. Поскольку вы используете spring, проверьте анонс @PropertySource.
Измените конфигурацию с помощью
@PropertySource("application-${spring.profiles.active}.properties")
Вы можете назвать это, когда захотите, и добавить несколько файлов свойств, если хотите. Может быть приятным, если у вас больше наборов и/или значений по умолчанию, которые принадлежат ко всем средам (может быть написано с помощью @PropertySource {...,...,...}).
@PropertySources(
@PropertySource("application-${spring.profiles.active}.properties"),
@PropertySource("my-special-${spring.profiles.active}.properties"),
@PropertySource("overridden.properties"))
Затем вы можете запустить приложение с помощью среды
-Dspring.active.profiles=test
В этом примере имя будет заменено на свойства приложения-test и т.д.
Ответ 3
мы можем сделать так:
в application.yml:
spring:
profiles:
active: test //modify here to switch between environments
include: application-${spring.profiles.active}.yml
в application-test.yml:
server:
port: 5000
и в application-local.yml:
server:
address: 0.0.0.0
port: 8080
тогда spring загрузка начнет наше приложение, как мы хотим.