Configuração Spring YAML
1. Visão geral
Uma das maneiras de configurar aplicativos Spring é usar arquivos de configuração YAML.
Neste artigo rápido, configuraremos perfis diferentes para um aplicativo Spring Boot simples usando YAML.
Leitura adicional:
Um guia rápido para Spring @Value
Aprenda a usar a anotação Spring @Value para configurar campos de arquivos de propriedades, propriedades do sistema etc.
Usando Spring @Value com padrões
Um guia rápido e prático para definir valores padrão ao usar a anotação @Value no Spring.
Como injetar um valor de propriedade em uma classe não gerenciada pela Spring?
Aprenda como inicializar valores de propriedades em classes Java sem o uso direto do mecanismo de injeção do Spring.
2. Arquivo YAML Spring
Os perfis do Spring ajudam a permitir que os Aplicativos do Spring definam propriedades diferentes para ambientes diferentes.
A seguir está um arquivo YAML simples que contém dois perfis. The three dashes separating the two profiles indicate the start of a new document so all the profiles can be described in the same YAML file.
O caminho relativo do arquivoapplication.yml é/myApplication/src/main/resources/application.yml.
O aplicativo Spring usa o primeiro perfil como o perfil padrão, a menos que declarado de outra forma no aplicativo Spring.
spring:
profiles: test
name: test-YAML
environment: test
servers:
- www.abc.test.com
- www.xyz.test.com
---
spring:
profiles: prod
name: prod-YAML
environment: production
servers:
- www.abc.com
- www.xyz.com
3. Vinculando YAML a uma classe de configuração
Para carregar um conjunto de propriedades relacionadas de um arquivo de propriedades, criaremos uma classe de bean:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig {
private String name;
private String environment;
private List servers = new ArrayList<>();
// standard getters and setters
}
As anotações usadas aqui são:
-
@Configuration marca a classe como uma fonte de definições de feijão
-
@ConfigurationProperties liga e valida as configurações externas para uma classe de configuração
-
@EnableConfigurationProperties esta anotação é usada para habilitar os beans anotados@ConfigurationProperties no aplicativo Spring
4. Acessando as propriedades YAML
Para acessar as propriedades YAML, criamos um objeto da classeYAMLConfig e acessamos as propriedades usando esse objeto.
No arquivo de propriedades, vamos definir a variável de ambientespring.active.profiles paraprod. Se não definirmosspring.profiles.active,, o padrão será a primeira propriedade de perfis definida no arquivo YAML.
O caminho relativo para o arquivo de propriedades é/myApplication/src/main/resources/application.properties.
spring.profiles.active=prod
Neste exemplo, exibimos as propriedades usando oCommandLineRunner.
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
@Autowired
private YAMLConfig myConfig;
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.run();
}
public void run(String... args) throws Exception {
System.out.println("using environment: " + myConfig.getEnvironment());
System.out.println("name: " + myConfig.getName());
System.out.println("servers: " + myConfig.getServers());
}
}
A saída na linha de comandos:
using environment: production
name: prod-YAML
servers: [www.abc.com, www.xyz.com]
5. Substituição de propriedade YAML
No Spring Boot, os arquivos YAML podem ser substituídos por outros arquivos de propriedades YAML, dependendo da localização. As propriedades YAML podem ser substituídas pelos arquivos de propriedades nos seguintes locais, em ordem de maior precedência primeiro:
-
Propriedades dos perfis colocadas fora do frasco empacotado
-
Propriedades dos perfis empacotadas dentro do frasco empacotado
-
Propriedades do aplicativo colocadas fora do frasco empacotado
-
Propriedades do aplicativo empacotadas dentro do frasco empacotado
6. Conclusão
Neste artigo rápido, vimos como configurar propriedades em aplicativos Spring Boot usando YAML. Também vimos as regras de substituição de propriedade seguidas por Spring Boot para arquivos YAML.
O código para este artigo está disponívelover on GitHub.