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:

  1. Argumentos de linha de comando.
  2. Java propriedades do Sistema (System.getProperties()).
  3. OS variáveis de ambiente.
  4. JNDI atributos de java:comp/env
  5. Um RandomValuePropertySource que só tem propriedades em random.*.
  6. @PropertySource anotações em seus @Configuration classes.
  7. Aplicação de propriedades fora de seus compactado jar (application.properties incluindo o YAML e o perfil de variantes).
  8. Propriedades do aplicativo empacotado dentro do seu jar (application.properties incluindo o YAML e o perfil de variantes).
  9. 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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top