Frage

Ich möchte meinen eigenen Spring Boot-Starter schreiben und ihn von einem anderen Starter erben lassen (sagen wir spring-boot-starter-batch).Jetzt möchte ich eine der Spring-Boot-Starter-Batch-Eigenschaften auf einen Standardwert festlegen, der sich vom Standardwert von Spring-Boot-Starter-Batch unterscheidet (z. B spring.batch.job.enabled=false statt wahr).Der Benutzer meines Starters soll es weiterhin überschreiben können application.properties.

Das ist doch nicht wirklich möglich, oder?Die Reihenfolge zum Lesen von Eigenschaften ist die folgende:

  1. Kommandozeilenargumente.
  2. Java-Systemeigenschaften (System.getProperties()).
  3. Betriebssystemumgebungsvariablen.
  4. JNDI-Attribute von java:comp/env
  5. A RandomValuePropertySource das hat nur Eigenschaften in random.*.
  6. @PropertySource Anmerkungen zu Ihrem @Configuration Klassen.
  7. Anwendungseigenschaften außerhalb Ihres verpackten Glases (application.properties einschließlich YAML und Profilvarianten).
  8. Anwendungseigenschaften in Ihrem Glas verpackt (application.properties einschließlich YAML und Profilvarianten).
  9. Standardeigenschaften (angegeben mit SpringApplication.setDefaultProperties).

Also, wenn ich benutze @PropertySource in meinem Starter, um die Eigenschaft festzulegen, kann der Benutzer meines Starters sie nicht über überschreiben application.properties.Wäre es nicht sinnvoll, die Reihenfolge und das Set zu ändern? @PropertySource bei Nummer 8?

Oder gibt es eine Möglichkeit, das zu erreichen, was ich will?

War es hilfreich?

Lösung

Die Reihenfolge von @PropertySource steht auf jeden Fall zur Debatte.Vor dieser Debatte sollten Sie jedoch in der Lage sein, Ihre eigenen Eigenschaftsquellen in einem Listener oder Initialisierer (wie dem vorhandenen Konfigurationsdatei-Listener) hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top