Heim > Java > javaLernprogramm > Hauptteil

So laden Sie externe Konfigurationsdateien, nachdem das SpringBoot-Projekt in ein JAR umgewandelt wurde

PHPz
Freigeben: 2023-05-11 23:28:14
nach vorne
1998 Leute haben es durchsucht

1. Application.properties ist extern

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
Nach dem Login kopieren

Verwendung im Controller:

@Value("${demo.name}")
private String demoName;
 
@RequestMapping("/test")
public String test(){
    return this.demoName;
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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

Zweitens @PropertySource external

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
Nach dem Login kopieren

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=&#39;" + nickname + &#39;\&#39;&#39; +
                ", weixin=&#39;" + weixin + &#39;\&#39;&#39; +
                &#39;}&#39;;
    }
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage