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.