Рубрики
Без рубрики

Файл свойств пружины Вне jar

Узнайте, как загрузить свойства пружины из-за пределов пакета jar

Автор оригинала: baeldung.

1. Обзор

Файлы свойств-это распространенный метод, который мы можем использовать для хранения информации, относящейся к конкретному проекту. В идеале мы должны держать его внешним по отношению к упаковке, чтобы иметь возможность вносить изменения в конфигурацию по мере необходимости.

В этом кратком руководстве мы рассмотрим различные способы загрузки файла свойств из расположения вне jar в приложении Spring Boot .

2. Использование местоположения по умолчанию

По соглашению Spring Boot ищет внешний конфигурационный файл – application . свойства или application.yml в 4 заранее определенных местах в следующем порядке приоритета:

  • A /config подкаталог текущего каталога
  • Текущий каталог
  • Путь к классу /config package
  • Корень пути к классу

Поэтому будет загружено свойство, определенное в application.properties и помещенное в подкаталог config текущего каталога . Это также переопределит свойства в других местах в случае столкновения.

3. Использование командной строки

Если вышеприведенное соглашение не работает для нас, мы также можем настроить местоположение непосредственно в командной строке:

java -jar app.jar --spring.config.location=file:///Users/home/config/jdbc.properties

Мы также можем передать папку, в которой приложение будет искать файл:

java -jar app.jar --spring.config.name=application,jdbc --spring.config.location=file:///Users/home/config

Кроме того, альтернативным подходом является запуск приложения Spring Boot через плагин Maven . Там мы можем использовать параметр -D :

mvn spring-boot:run -Dspring.config.location="file:///Users/home/jdbc.properties"

4. Использование Переменных окружения

Или, скажем, мы не можем изменить команду запуска. Что здорово, так это то, что Spring Boot также будет читать переменные окружения SPRING_CONFIG_NAME и SPRING_CONFIG_LOCATION :

export SPRING_CONFIG_NAME=application,jdbc
export SPRING_CONFIG_LOCATION=file:///Users/home/config
java -jar app.jar

Обратите внимание, что файл по умолчанию все равно будет загружен. Но в случае коллизии свойств файл свойств конкретной среды имеет приоритет.

5. Использование Свойств приложения

Как мы видим, и то, и другое spring.config.name и spring.config.location свойства должны быть определены до запуска приложения, поэтому использование их в файле application.properties (или аналоге YAML) не будет иметь никакого эффекта.

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

spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties

6. Программно

Или, если нам нужен программный доступ, мы можем зарегистрировать PropertySourcesPlaceholderConfigurer bean:

public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer properties = 
      new PropertySourcesPlaceholderConfigurer();
    properties.setLocation(new FileSystemResource("/Users/home/conf.properties"));
    properties.setIgnoreResourceNotFound(false);
    return properties;
}

Здесь мы использовали PropertySourcesPlaceholderConfigurer для загрузки свойств из пользовательского местоположения.

7. Исключение файла из Толстой банки

Загрузочный плагин Maven автоматически включит все файлы в каталог src/main/resources в пакет jar.

Если мы не хотим, чтобы файл был частью jar, то мы можем просто настроить его, чтобы исключить его:


    
        
            src/main/resources
            true
            
                **/conf.properties
            
        
    

В этом примере мы отфильтровали файл conf.properties от включения в результирующую банку.

8. Заключение

Как мы видим, фреймворк Spring Boot сам заботится о внешней конфигурации для нас.

Часто нам просто нужно поместить значения свойств в правильные файлы и местоположения, но мы также можем использовать Java API Spring для большего контроля.

Как всегда, полный исходный код примеров доступен на GitHub .