загрузка файла свойств вне файла war при весенней загрузке - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно загрузить файл application.properties извне весенней войны загрузки, которая будет развернута в tomcat.

Я пробовал разные решения, чего-то не хватает

  1. Пробная установка переменной среды, как показано ниже в окнах

    имя: SPRING_CONFIG_NAME Значение D: /test/application.properties

Я пробовал несколько значений для указанного выше значения, например file: /// в префиксе и только file: как perfix. Ничего не получалось

  1. Попробовал с параметром контекста tomcat как упомянуто ниже SO ответ https://stackoverflow.com/a/44697239/2751962

  2. Пробная загрузка в основном файле, которая расширяет SpringBootServletIntializer

    защищенная конфигурация SpringApplicationBuilder (приложение SpringApplicationBuilder) { возврат application.sources (Application.class) .properties (GetProperties ()); }

     public static void main(String[] args) throws Exception {
                    SpringApplication.run(Application.class, args);
    
                     SpringApplicationBuilder springApplicationBuilder = (SpringApplicationBuilder) (new SpringApplicationBuilder(Application.class))
                     .sources(Application.class)
                     .properties(getProperties())
                     .run(args);
    
    
                }
    
                static Properties getProperties() {
                    Properties props = new Properties();
                    props.put("spring.config.location", "file:///D:/test/application.properties​");
                    return props;
                }
    

Я не уверен, что я пропустил, Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете попробовать установить свойства через XML и / или конфигурацию Java и @PropertySource.

@Configuration
@PropertySource("classpath:foo.properties")
public class PropertiesWithJavaConfig {
    //...
}

источник: - https://www.baeldung.com/properties-with-spring

0 голосов
/ 07 сентября 2018

Внешняя конфигурация при загрузке пружины

При использовании Spring Boot существуют документированные соглашения об именах и структура каталогов. Приложение Spring Boot ищет свойства для загрузки из списка приоритетов, поэтому есть предложения, которые вы должны рассмотреть:

  1. Используйте флаг командной строки spring.config.location, чтобы указать конкретный файл или каталог, из которого можно загрузить источники свойств. Вы можете использовать это, чтобы указать каталоги для поиска или отдельные файлы для загрузки. Будьте осторожны при загрузке отдельных файлов, если вы собираетесь использовать свойства на основе профиля. (добавьте флаг в команду следующим образом: java -jar MyJar.jar --spring.config.location=D:\test\)
  2. По умолчанию Spring Boot ищет каталог ./config/, в котором находится WAR, и каталог самой WAR, поэтому вы можете поместить «application.properties» в любую позицию, и он будет загружен.

Pivotal предоставляет отличную справочную информацию о Spring Boot. Раздел 24 охватывает свойства более широко, чем я могу в посте.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html (* ссылки на ссылки на самый последний выпуск)

Примечание: я не пользователь Windows, поэтому будьте осторожны при вставке в этот путь к файлу выше. Отредактируйте меня.


Расширение конфигурации до развертываемых пакетов

Обычно Spring Boot упаковывает в исполняемый файл WAR или JAR со встроенным механизмом контейнера сервлетов, который используется для среды выполнения. Однако в вашем случае вы упаковываете обычный WAR и развертываете его во внешнем экземпляре Tomcat, поэтому параметры конфигурации должны передаваться через Tomcat с использованием переменной JAVA_OPTS.

Для Apache Tomcat принято размещать ваши свойства в ${catalina_base}/conf, где catalina.base указывает на местоположение экземпляра Tomcat. Я только что создал рабочую демонстрацию, выполнив следующие действия:

  • Во-первых, следуйте разделу 88.1 справки для настройки базового приложения WAR
  • mvn package
  • Поместите application.properties в каталог conf внутри Tomcat
  • set JAVA_OPTS=-Dspring.config.location=${catalina.base}/conf/
  • "%CATALINA_HOME%"\bin\startup
  • Deploy

Это не самый чистый конвейер развертывания, но если вам нужно использовать внешний экземпляр Tomcat, то это будет работать. Однако запуск нескольких приложений с отдельными файлами свойств в одном экземпляре Tomcat усложнит ситуацию. В этом случае использование Spring Framework (не Boot) будет проще в настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...