Question

Je veux écrire mon propre démarreur Spring Boot et le laisser hériter d'un autre démarreur (disons spring-boot-starter-batch).Maintenant, je souhaite définir l'une des propriétés spring-boot-starter-batch sur une valeur par défaut qui diffère de la valeur par défaut de spring-boot-starter-batch (par exemple spring.batch.job.enabled=false au lieu de vrai).L'utilisateur de mon démarreur pourra toujours le remplacer via application.properties.

Ce n'est pas vraiment possible, n'est-ce pas ?L'ordre de lecture des propriétés est le suivant :

  1. Arguments de ligne de commande.
  2. Propriétés du système Java (System.getProperties()).
  3. Variables d'environnement du système d'exploitation.
  4. Attributs JNDI de java:comp/env
  5. UN RandomValuePropertySource qui n'a que des propriétés dans random.*.
  6. @PropertySource des annotations sur votre @Configuration Des classes.
  7. Propriétés de l'application en dehors de votre pot emballé (application.properties y compris YAML et variantes de profil).
  8. Propriétés de l'application emballées dans votre pot (application.properties y compris YAML et variantes de profil).
  9. Propriétés par défaut (spécifiées à l'aide de SpringApplication.setDefaultProperties).

Donc si j'utilise @PropertySource dans mon démarreur pour définir la propriété, l'utilisateur de mon démarreur ne pourra pas la remplacer via application.properties.Ne serait-il pas judicieux de modifier l'ordre et de définir @PropertySource au numéro 8 ?

Ou existe-t-il un moyen d'obtenir ce que je veux ?

Était-ce utile?

La solution

L'ordre de @PropertySource est définitivement sujet à débat.Avant ce débat, vous devriez pouvoir ajouter vos propres sources de propriétés dans un écouteur ou un initialiseur (comme l'écouteur de fichier de configuration existant).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top