Quero acessar os valores fornecidos em application.properties
, por exemplo:
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log
userBucket.path=${HOME}/bucket
Quero acessar userBucket.path
meu programa principal em um aplicativo Spring Boot.
java
spring-boot
properties-file
Qasim
fonte
fonte
Environment
ou via@ConfigurationProperties
@Configuration
classes, o problema é bem analisado na seguinte postagem@Component
(ou qualquer de seus derivados, ie@Repository
, etc.)Outra maneira é injetar
org.springframework.core.env.Environment
no seu feijão.fonte
org.springframework.core.env.Environment
@ConfigurationProperties
pode ser usado para mapear valores de.properties
(.yml
também suportado) para um POJO.Considere o seguinte arquivo de exemplo.
.properties
Employee.java
Agora, o valor das propriedades pode ser acessado através da ligação automática da
employeeProperties
seguinte maneira.fonte
src/main/resources
se não estiver testando seu código em um teste do Spring.Atualmente, conheço as três maneiras a seguir:
1. A
@Value
anotaçãonull
. Por exemplo, quando você tenta defini-lo em umpreConstruct()
método ouinit()
método. Isso acontece porque a injeção de valor ocorre depois que a classe é totalmente construída. É por isso que é melhor usar a 3ª opção.2. A
@PropertySource
anotaçãoPropertySouce
define valores do arquivo de origem da propriedade em umaEnvironment
variável (na sua classe) quando a classe é carregada. Então você é capaz de buscar facilmente um posfácio.3. A
@ConfigurationProperties
anotação.Inicializa uma entidade com base nos dados da propriedade.
@ConfigurationProperties
identifica o arquivo de propriedades a ser carregado.@Configuration
cria um bean com base nas variáveis do arquivo de configuração.fonte
spring.config.location
? # 2 ainda funciona?Você pode fazê-lo dessa maneira também ....
Onde quer que você queira ler a partir de application.properties, basta passar a chave para o método getConfigValue.
fonte
Environment
?spring.config.location
?Você pode usar o
@Value
para carregar variáveis doapplication.properties
se você usar esse valor em um único local, mas se precisar de uma maneira mais centralizada de carregar essas variáveis,@ConfigurationProperties
é uma abordagem melhor.Além disso, você pode carregar variáveis e convertê-las automaticamente se precisar de tipos de dados diferentes para executar suas validações e lógica de negócios.
fonte
Siga esses passos. 1: - crie sua classe de configuração como abaixo, você pode ver
2: - quando você tem uma classe de configuração, injete a variável na configuração em que você precisa.
fonte
fonte
Um aplicativo pode ler 3 tipos de valor no arquivo application.properties.
application.properties
arquivo de classe
Se você não tiver uma propriedade em application.properties, poderá usar o valor padrão
fonte
O Spring-boot nos permite vários métodos para fornecer configurações externalizadas, você pode tentar usar arquivos application.yml ou yaml em vez do arquivo de propriedades e fornecer diferentes arquivos de propriedades configurados de acordo com diferentes ambientes.
Podemos separar as propriedades de cada ambiente em arquivos yml separados em perfis de mola separados.Em seguida, durante a implantação, você pode usar:
para especificar qual perfil de primavera usar. Observe que os arquivos yml devem ter nomes como
para que sejam capturados automaticamente pelo springboot.
Referência: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties
Para ler do arquivo application.yml ou property:
A maneira mais fácil de ler um valor do arquivo de propriedades ou do yml é usar a anotação spring @value.Spring carrega automaticamente todos os valores do yml para o ambiente do spring, para que possamos usar diretamente esses valores do ambiente, como:
Ou outro método que o Spring fornece para ler feijões fortemente tipados é o seguinte:
POJO correspondente para ler o yml:
O método acima funciona bem com arquivos yml.
Referência: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
fonte
Para mim, nenhuma das opções acima funcionou diretamente para mim. O que eu fiz é o seguinte:
Além da resposta do @Rodrigo Villalba Zayas, adicionei
implements InitializingBean
à classee implementei o método
Então isso vai parecer
fonte
As melhores maneiras de obter valores de propriedade estão usando.
1. Usando anotação de valor
2. Usando o bean Enviornment
fonte
O melhor é usar a
@Value
anotação que atribuirá valor automaticamente ao seu objetoprivate Environment en
. Isso reduzirá seu código e será fácil filtrar seus arquivos.fonte
Há duas vias,
@Value
na sua classeOU
@Configuration
classe onde você pode adicionar todos os seus@value
fonte