Propriedade de ordem na Primavera de Inicialização
-
21-12-2019 - |
Pergunta
Eu quero escrever a minha própria Primavera de Arranque de partida e deixe-a herdar de outra starter (vamos dizer primavera-boot-starter-lote).Agora eu quero um set de primavera-boot-starter-lote propriedades para um padrão que difere da primavera-boot-starter-lote padrão (por exemplo, spring.batch.job.enabled=false
em vez de true).O usuário do meu starter deve ainda ser capaz de substituí-la através de application.properties
.
Isso não é realmente possível, certo?A ordem para as propriedades de leitura é a seguinte:
- Argumentos de linha de comando.
- Java propriedades do Sistema (
System.getProperties()
). - OS variáveis de ambiente.
- JNDI atributos de
java:comp/env
- Um
RandomValuePropertySource
que só tem propriedades emrandom.*
. @PropertySource
anotações em seus@Configuration
classes.- Aplicação de propriedades fora de seus compactado jar (
application.properties
incluindo o YAML e o perfil de variantes). - Propriedades do aplicativo empacotado dentro do seu jar (
application.properties
incluindo o YAML e o perfil de variantes). - As propriedades padrão (especificado usando
SpringApplication.setDefaultProperties
).
Então, se eu usar @PropertySource
na minha partida para definir a propriedade, o usuário do meu starter não será capaz de substituí-la através de application.properties
.Não faria sentido alterar a ordem e a definir @PropertySource
no número 8?
Ou existe uma maneira de conseguir o que eu quero?
Solução
A ordem de @PropertySource
é, definitivamente, para o debate.Antes que o debate que você deve ser capaz de adicionar suas próprias propriedade fontes em um ouvinte ou inicializador (como existentes arquivo de configuração do ouvinte).