Arquivo de propriedades da mola Jar externo

Arquivo de propriedades da mola Jar externo

1. Visão geral

Os arquivos de propriedades são um método comum que podemos usar para armazenar informações específicas do projeto. Idealmente, devemos mantê-lo externo à embalagem para poder fazer alterações na configuração conforme e quando necessário.

Neste tutorial rápido, veremos váriosways to load the properties file from a location outside the jar in a Spring Boot application.

2. Usando o local padrão

Por convenção, Spring Boot procura um arquivo de configuração externalizado -[.crayon-pre .crayon-code]application.properties [crayon-5c73a186c8530009937282 .crayon-syntax .crayon-syntax-inline .crayon-theme-familiar .crayon-theme-familiar-inline .crayon-font-consolas] [.crayon-pre .crayon-code] [. Crayon-v]or application.yml ### em 4 predeterminados locais na seguinte ordem de precedência:

  • Um subdiretório/config do diretório atual

  • O diretório atual

  • Um pacote de classpath/config

  • A raiz do caminho de classe

Portanto,a property defined in application.properties and placed in the /config subdirectory of the current directory will be loaded. Isso também substituirá propriedades em outros locais em caso de colisão.

3. Usando a linha de comando

Se a convenção acima não funcionar para nós, também podemosconfigure the location directly in the command line:

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

Também podemos passar um local da pasta onde o aplicativo pesquisará o arquivo:

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

E, uma abordagem alternativa é executar o aplicativo Spring Boot por meio deMaven plugin. Lá, podemos usar um parâmetro-D:

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

4. Usando variáveis ​​de ambiente

Ou digamos que não podemos alterar o comando de inicialização. O que é ótimo éSpring Boot will also read the environment variables SPRING_CONFIG_NAME and SPRING_CONFIG_LOCATION:

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

Observe que o arquivo padrão ainda será carregado. Mas no caso de uma colisão de propriedade,the environment-specific property file takes precedence.

5. Programaticamente

Ou, se quisermos acesso programático, podemos registrar um beanPropertySourcesPlaceholderConfigurer:

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

Aqui, usamosPropertySourcesPlaceholderConfigurer para carregar as propriedades de um local personalizado.

6. Excluindo um Arquivo do Fat Jar

O plug-in de inicialização do Maven incluirá automaticamente todos os arquivos do diretóriosrc/main/resources no pacote jar.

Se não quisermos que um arquivo faça parte do jar, podemos uma configuração simples para excluí-lo:


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

Neste exemplo, filtramos o arquivoconf.properties de ser incluído no jar resultante.

7. Conclusão

Como podemos ver, a própria estrutura do Spring Boot cuida deexternalized configuration para nós.

Freqüentemente, temos apenas que colocar os valores das propriedades nos arquivos e locais corretos, mas também podemos usar a API Java do Spring para obter mais controle.

Como sempre, o código-fonte completo dos exemplos está disponívelover on GitHub.