В моем приложении Spring Boot я хочу создать файл свойств для конкретной среды. Тип упаковки моего приложения на войне, и я выполняю его во встроенном tomcat. Я использую петли, а основную выполняю из самой петли.
- Могу ли я получить файл свойств для конкретной среды, например application - $ {env-value} .properties?
В приведенном выше случае значение env будет иметь значения local / devl / test / prod
Где установить файл значений env? Для локального я могу установить его как аргумент jvm через sts
Кто читает application.properties в приложении Spring Boot.
Как загрузить файл свойств конкретной среды? Например, если я установлю uid, pwd, схему и т. Д. Базы данных в файле свойств конкретной среды, в этом случае сможет ли источник данных понять свойства в нем?
Могу ли я использовать файл application.properties и application-local.properties одновременно?
источник
spring.active.profiles
так использовать-Dspring.active.profiles=local
. вместо.Ответы:
Spring Загрузочный уже имеет поддержку для профиля свойства основе .
Просто добавьте
application-[profile].properties
файл и укажите профили для использования с помощьюspring.profiles.active
свойства.-Dspring.profiles.active=local
Это загрузит
application.properties
иapplication-local.properties
с последними переопределяющими свойствами из первого.источник
Да, ты можешь. Поскольку вы используете 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
В этом примере name будет заменено на application-test-properties и так далее.
источник
$spring.profiles.active}
это строка, разделенная массивом / запятыми. Таким образом, он может не делать того, что вы ожидаете / хотите, когда активны несколько профилей.мы можем сделать так:
в 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
затем весенняя загрузка запустит наше приложение, как мы хотим.
источник
Моя точка зрения, В этом случае я не прошу разработчика создать всю связанную среду за один раз, что приведет к риску раскрытия производственной конфигурации конечному разработчику.
согласно 12-Factor, не должно быть специфическим для среды, проживать только в Enviornment.
Как мы делаем для CI CD
источник