Файл внешних свойств Spring Boot 2.0 в Tomcat с использованием пакета WAR - PullRequest
0 голосов
/ 18 апреля 2019

Я хотел бы создать приложение Spring Boot (упакованное как WAR), которое автоматически переопределяет некоторый файл конфигурации в зависимости от среды, в которой он развернут.Я также хочу, чтобы файл свойств был внешним по отношению к WAR.Я использую в качестве ОС Centos и Tomcat в качестве веб-сервера.

Я пытаюсь проследить ответ Владимира Митева на следующий вопрос Аналогичный вопрос .

Чтобы добиться этого, я создал эту переменную среды SPRING_CONFIG_ADDITIONAL_LOCATION.Затем в пути я создал файл db.properties, содержащий свойство, которое я хотел бы переопределить.

Затем в инициализаторе сервлета я поместил эту конфигурацию:

public class ServletInitializer extends SpringBootServletInitializer {
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(MyApplication.class).properties("spring.config.name: db");

  }
}

Этодругой необходимый класс:

@SpringBootApplication
public class MyApplication{
    public static void main(String[] args) {
        System.setProperty("spring.config.name", "db");
        SpringApplication.run(MyApplication.class, args);
    }
}

Но Spring Boot во время инициализации не находит файл db.properties.

В официальной документации кажется, что я должениспользуйте это «spring.config.additional-location» для достижения моей цели, но я не понимаю, как.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Вы можете попробовать:

  1. Создать папку с именем «config» в [tomcat-server-folder] / bin
  2. Создать файл db.properties в папке конфигурации. ([-Сервер Tomcat-папка] /bin/config/db.properties)
  3. Просто создайте файл setenv.sh в каталоге bin Tomcat с содержимым:

JAVA_OPTS = "$ JAVA_OPTS -Dspring.config.name = db"

Или вы можете указать конкретное местоположение файла конфигурации:

JAVA_OPTS = "$ JAVA_OPTS -Dspring.config.location = / opt / app / default.properties, / opt / app / db.properties"

1 голос
/ 18 апреля 2019

слишком поздно для настройки в SpringBootServletInitializer, вы должны установить свойство до запуска весеннего приложения

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        System.setProperty("spring.config.name", "db");
        SpringApplication.run(MyApplication.class, args);
    }
}
...