Die meisten Konfigurationsinformationen sind in application.properties konfiguriert. Kann diese Datei also extern sein? Natürlich ist das möglich.
Definieren Sie zunächst eine Eigenschaft in application.preperties:
demo.name = hello.01
Verwendung im Controller:
@Value("${demo.name}") private String demoName; @RequestMapping("/test") public String test(){ return this.demoName; }
Legen Sie das Projekt in ein JAR-Paket und starten Sie es mit java -jar:
java -jar springboot-out-properties-0.0 .1 -SNAPSHOT.jar
Der zu diesem Zeitpunkt gelesene Wert ist: hello.01.
Kopieren Sie die application.properties im Projekt und fügen Sie sie in den gleichen Pfad wie das JAR-Paket ein. Ändern Sie den Eigenschaftswert in:
demo.name = hello.02
Dann verwenden Sie den obigen Befehl, um neu zu starten und den gelesenen Wert zu sehen . Überraschung oder nicht, Spring Boot ist so großartig, dass es direkt aus demselben Pfad gelesen werden kann.
Wenn wir eine neue Konfiguration unter dem JAR erstellen und application.properties darin einfügen, können wir sie dann mit dem obigen Befehl identifizieren? Die Antwort ist Ja,
SpringApplication lädt die Eigenschaften aus der Datei application.properties am folgenden Speicherort und fügt sie der Spring-Umgebung hinzu:
/config-Unterverzeichnis im aktuellen Verzeichnis
classpath-Stammverzeichnis
/config-Verzeichnis im Klassenpfad
Aktuelles Verzeichnis
Wenn ein benutzerdefiniertes Verzeichnis wie conf zu diesem Zeitpunkt nicht erkannt wird, können Sie jedoch --spring.config.location verwenden, um den Pfad anzugeben. Der Ausführungsbefehl lautet wie folgt:
java -jar springboot-out-properties-0.0.1-SNAPSHOT.jar--spring.config.location=conf/application.properties
Natürlich können Sie auch den absoluten Pfad verwenden um Folgendes anzugeben:
java - jar springboot-out-properties-0.0.1-SNAPSHOT.jar--spring.config.location=/Users/linxiangxian/Downloads/conf/application.properties
Im Projekt gibt es einige Konfigurationen. Passen Sie die Eigenschaftendatei für die Verwendung an. Definieren Sie beispielsweise demo.properties:
demo.nickname = hello.10 demo.weixin = springboot
Verwenden Sie @PropertySource, um die Konfigurationsdatei anzugeben:
/** * @PropertySource的例子 * <p> */ @Configuration @ConfigurationProperties(prefix = "demo") @PropertySource(value = {"classpath:demo.properties"}) public class DemoProperties { private String nickname; private String weixin; public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getWeixin() { return weixin; } public void setWeixin(String weixin) { this.weixin = weixin; } @Override public String toString() { return "DemoProperties{" + "nickname='" + nickname + '\'' + ", weixin='" + weixin + '\'' + '}'; } }
Anschließend können Sie zu diesem Zeitpunkt auf diese Konfigurationsdatei zugreifen. Machen Sie daraus ein JAR-Paket und führen Sie den Befehl aus:
java -jar springboot-out-properties-0.0.1-SNAPSHOT.jar
Der zu diesem Zeitpunkt zurückgegebene Wert ist: hello.10
Fügen Sie demo.properties ein Geben Sie denselben Pfad wie das JAR-Paket ein und ändern Sie den Wert von demo.name in hello.11. Führen Sie den obigen Befehl Barbie Q aus. Das Ergebnis ist immer noch hello.10, was darauf hinweist, dass Spring Boot die angepasste Eigenschaftendatei von außen nicht finden kann .
Was können wir also gegen dieses Problem tun?
Es ist ganz einfach. @PropertySource unterstützt mehrere Konfigurationen mehrerer Pfade, die wie folgt konfiguriert werden können:
@PropertySource(value = {"classpath:demo.properties","file:./demo.properties"},ignoreResourceNotFound = true)
Wenn wir mehrere Pfade konfigurieren und die Konfigurationsdateien in den mehreren Pfaden vorhanden sind, lädt SpringBoot sie alle und deckt denselben Inhalt ab . Wenn unsere Konfigurationsinformationen also nur externe und interne Pfade unterscheiden und die Inhalte genau gleich sind, schreiben Sie einfach den Dateipfad am Ende. Wenn wir lokal starten, wird der Klassenpfad geladen. Wenn das JAR gestartet wird, überschreibt der Dateipfad den Inhalt des Klassenpfads.
ignoreResourceNotFound = true muss hinzugefügt werden, andernfalls wird ein Fehler angezeigt gemeldet werden, wenn es nicht gefunden werden kann. Nach dem Hinzufügen werden nicht gefundene Konfigurationsdateien ignoriert.
Stellen Sie an dieser Stelle einfach die Konfigurationsdatei demo.properties auf die gleiche Ebene wie das JAR-Paket.
Das obige ist der detaillierte Inhalt vonSo laden Sie externe Konfigurationsdateien, nachdem das SpringBoot-Projekt in ein JAR umgewandelt wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!