Ambiente no Spring Boot

Ambiente no Spring Boot

No Spring Boot, Environment é um componente importante usado para gerenciar a configuração do aplicativo. É uma interface que fornece métodos para acessar as propriedades de configuração do aplicativo. Neste artigo, vamos nos aprofundar no Ambiente no Spring Boot, incluindo como ele funciona e como usá-lo.

insira a descrição da imagem aqui

O Princípio do Meio Ambiente

No Spring Boot, Environment é uma interface para gerenciar as propriedades de configuração. Ele fornece muitos métodos para obter propriedades de configuração, como getProperty(), getPropertySources() e getActiveProfiles(), etc. Quando o aplicativo é iniciado, o Spring Boot cria automaticamente uma instância do ambiente e o utiliza para carregar a configuração do aplicativo.

O ambiente consiste em vários PropertySources. Cada PropertySource contém um conjunto de pares chave-valor da propriedade, e os valores da propriedade podem ser obtidos através do método getProperty(). Quando um aplicativo precisa obter uma propriedade de configuração, o Spring Boot percorre a lista PropertySource e procura uma propriedade correspondente.

No Spring Boot, há muitas classes que implementam a interface PropertySource, como MapPropertySource, SystemEnvironmentPropertySource e CommandLinePropertySource. Essas classes podem ser usadas para carregar diferentes fontes de configuração, como parâmetros de linha de comando, variáveis ​​de ambiente do sistema e arquivos de configuração.

Como usar Ambiente

No Spring Boot, podemos usar Environment para obter as propriedades de configuração do aplicativo. Aqui estão alguns métodos comumente usados:

@Configuration
public class MyConfig {
    
    

    @Autowired
    private Environment env;

    @Bean
    public MyBean myBean() {
    
    
        String property = env.getProperty("my.property");
        return new MyBean(property);
    }
}

No código acima, usamos a anotação @Autowired para injetar o Environment na classe MyConfig. Em seguida, no método myBean(), usamos o método getProperty() para obter o valor da propriedade my.property e passá-lo para o construtor do MyBean.

Além do método getProperty(), Environment fornece muitos outros métodos úteis. Por exemplo, podemos usar o método getActiveProfiles() para obter os arquivos de configuração atualmente ativos, usar o método getPropertySources() para obter todas as PropertySources e usar o método containsProperty() para verificar se uma propriedade existe, etc.

Uso Avançado do Ambiente

Além do uso básico, Environment também fornece alguns usos avançados, como adicionar e remover PropertySource.

Adicionar origem da propriedade

Em alguns casos, pode ser necessário adicionar uma PropertySource personalizada. Por exemplo, podemos carregar as propriedades de configuração do banco de dados e adicioná-las ao Environment. Aqui está um exemplo:

@Configuration
public class MyConfig {
    
    

    @Autowired
    private Environment env;

    @Bean
    public PropertySource<?> myPropertySource() {
    
    
        Map<String, Object> properties = new HashMap<>();
        properties.put("my.custom.property", "foo");
        return new MapPropertySource("myPropertySource", properties);
    }

    @Bean
    public MyBean myBean() {
    
    
        String property = env.getProperty("my.custom.property");
        return new MyBean(property);
    }
}

No código acima, primeiro definimos uma PropertySource chamada myPropertySource que contém uma propriedade chamada my.custom.property. Em seguida, no método myBean(), usamos o método getProperty() para obter o valor da propriedade my.custom.property e passá-lo para o construtor do MyBean.

deletePropertySource

Se precisarmos excluir uma PropertySource, podemos usar o método remove() fornecido pela interface MutablePropertySources. Por exemplo, o código a seguir demonstra como excluir uma PropertySource chamada myPropertySource:

@Configuration
public class MyConfig {
    
    

    @Autowired
    private ConfigurableEnvironment env;

    @Bean
    public PropertySource<?> myPropertySource() {
    
    
        Map<String, Object> properties = new HashMap<>();
        properties.put("my.custom.property", "foo");
        return new MapPropertySource("myPropertySource", properties);
    }

    @PostConstruct
    public void removeMyPropertySource() {
    
    
        MutablePropertySources propertySources = env.getPropertySources();
        propertySources.remove("myPropertySource");
    }
}

No código acima, primeiro definimos uma PropertySource chamada myPropertySource. Em seguida, no método removeMyPropertySource(), usamos a interface ConfigurableEnvironment para obter MutablePropertySources e remover myPropertySource usando o método remove().

Resumir

Neste artigo, analisamos detalhadamente o Ambiente no Spring Boot, incluindo como ele funciona e como usá-lo. Environment é uma interface para gerenciar propriedades de configuração, que é criada automaticamente quando o aplicativo é iniciado e consiste em vários PropertySources. Podemos usar o Environment para obter as propriedades de configuração do aplicativo e usar os métodos que ele fornece para obter o arquivo de configuração ativo, todos os PropertySources, verificar a existência de propriedades, etc. Além do uso básico, Environment também fornece alguns usos avançados, como adicionar e remover PropertySource personalizado.

Ao entender o princípio e o uso do Environment, podemos gerenciar melhor a configuração do aplicativo e melhorar a manutenibilidade e escalabilidade do código. Portanto, ao escrever aplicativos Spring Boot, devemos fazer pleno uso do Environment e usar seu uso avançado de acordo com as necessidades reais.

Finalmente, o código de exemplo é anexado para referência e estudo dos leitores.

@Configuration
public class MyConfig {
    
    

    @Autowired
    private Environment env;

    @Bean
    public MyBean myBean() {
    
    
        String property = env.getProperty("my.property");
        return new MyBean(property);
    }

    @Bean
    public PropertySource<?> myPropertySource() {
    
    
        Map<String, Object> properties = new HashMap<>();
        properties.put("my.custom.property", "foo");
        return new MapPropertySource("myPropertySource", properties);
    }

    @PostConstruct
    public void removeMyPropertySource() {
    
    
        MutablePropertySources propertySources = ((ConfigurableEnvironment) env).getPropertySources();
        propertySources.remove("myPropertySource");
    }
}

Acho que você gosta

Origin blog.csdn.net/it_xushixiong/article/details/131455051
Recomendado
Clasificación