No meu aplicativo Spring Boot, quero criar um arquivo de propriedades específicas do ambiente. O tipo de empacotamento do meu aplicativo está em guerra e estou executando-o no tomcat integrado. Eu uso sts e executo o principal a partir de sts.
- Posso ter o arquivo de propriedades específicas do ambiente, como o aplicativo - $ {env-value} .properties?
No caso acima, env-value terá valores como local / devl / test / prod
Onde definir o arquivo env-value? Para local, posso defini-lo como o argumento jvm por meio de sts
Quem lê o application.properties no aplicativo Spring Boot.
Como carregar o arquivo de propriedades específicas do ambiente? Por ex - se eu definir o banco de dados uid, pwd, schema etc no arquivo de propriedade específico do ambiente, nesse caso a fonte de dados será capaz de entender as propriedades nele?
Posso usar o arquivo application.properties e application-local.properties ao mesmo tempo?
fonte
spring.active.profiles
para usar-Dspring.active.profiles=local
. em vez de.Respostas:
Spring Boot já tem suporte para propriedades baseadas em perfis .
Basta adicionar um
application-[profile].properties
arquivo e especificar os perfis a serem usados usando aspring.profiles.active
propriedade.-Dspring.profiles.active=local
Isso carregará o
application.properties
e oapplication-local.properties
com o último substituindo as propriedades do primeiro.fonte
Sim você pode. Como você está usando a primavera, verifique a
@PropertySource
anotação.Anote sua configuração com
@PropertySource("application-${spring.profiles.active}.properties")
Você pode chamá-lo do que quiser e adicionar vários arquivos de propriedades, se quiser. Pode ser bom se você tiver mais conjuntos e / ou padrões que pertencem a todos os ambientes (pode ser escrito com @PropertySource {..., ..., ...} também).
@PropertySources({ @PropertySource("application-${spring.profiles.active}.properties"), @PropertySource("my-special-${spring.profiles.active}.properties"), @PropertySource("overridden.properties")})
Então você pode iniciar o aplicativo com o ambiente
-Dspring.active.profiles=test
Neste exemplo, o nome será substituído por propriedades de teste do aplicativo e assim por diante.
fonte
$spring.profiles.active}
é uma string separada por matriz / vírgula. Portanto, ele pode não fazer o que você espera / deseja quando houver vários perfis ativos.podemos fazer assim:
em application.yml :
spring: profiles: active: test //modify here to switch between environments include: application-${spring.profiles.active}.yml
em application-test.yml :
server: port: 5000
e em application-local.yml :
server: address: 0.0.0.0 port: 8080
em seguida, o Spring Boot iniciará nosso aplicativo como desejamos.
fonte
Meu ponto, desta maneira não está pedindo ao desenvolvedor para criar todo o ambiente relacionado de uma só vez, resultando em risco de expor a configuração de produção para o desenvolvedor final
de acordo com o fator 12, não deve ser específico do ambiente residir apenas no ambiente.
Como fazemos para CI CD
fonte