Configuração Spring YAML

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.

Read more

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.

Read more

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.

Read more

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.