Подтвердить что ты не робот

Environment Specific application.properties файл в Spring Загрузка приложения

В моем приложении загрузки Spring я хочу создать файл свойств среды. Тип упаковки моего приложения в войне, и я выполняю его во встроенном tomcat. Я использую sts и выполняю main из самого sts.

  • Могу ли я иметь файл свойств среды, подобный приложению - ${env-value}.properties?

В приведенном выше случае значение env будет иметь значения как local/devl/test/prod

  1. Где установить файл env-value? Для local я могу установить его как аргумент jvm через sts

  2. Кто читает application.properties в Spring приложении для загрузки.

  3. Как загрузить файл свойств конкретной среды? Например, если я задал базу данных uid, pwd, schema и т.д. В файле свойств среды, в этом случае источник данных сможет понять свойства в нем?

  4. Могу ли я использовать файлы application.properties и application-local.properties в то же время?

4b9b3361

Ответ 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 загрузка начнет наше приложение, как мы хотим.