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.
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");
}
}