Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 25865|Antwort: 0

[Quelle] Spring Boot liest (application.yml) den Wert der Konfigurationsdatei

[Link kopieren]
Veröffentlicht am 07.01.2019 15:37:14 | | | |
Zunächst application.yml Konfigurationsprofil wie folgt:



Maven-Projekt pom.xml Pakete hinzufügen:




Erstellen Sie ein neues abgebildetes Objekt mit folgendem Code:

Der String-Typ muss einen Setter benötigen, um Eigenschaftswerte zu erhalten; Karten, Sammlungen und Arrays sind nicht erforderlich

Verwenden Sie @Autowired Annotationen, um automatisch einzufügen, wie im folgenden Bild gezeigt:



esConfig gibt immer null aus, ich habe lange nach einer Lösung gesucht, aber fehlgeschlagen, es wird unten eine Lösung geben.

Lassen Sie uns einen neuen Controller erstellen, der Code ist wie folgt:

Die Injektion ist erfolgreich, und die Werte der yml-Konfigurationsdatei werden wie folgt erhalten:



Die Gründe, warum EsClient nicht erfolgreich injiziert werden kann, sind wie folgt:

Man nenne eine Funktion dieser Klasse im Konstruktor, und die Variable der @Autowired dieser Klasse wird in dieser Funktion verwendet.

Deshalb dachte ich, es könnte schiefgehen. Weil @Autowired warten muss, bis die Klasse konstruiert ist, bevor sie aus externen Referenzen gesetzt werden kann. Daher muss die Einspritzzeit von @Autowired später sein als die Ausführungszeit des Konstruktors.
Lösung:

Spring Team empfiehlt: "Verwenden Sie immer konstruktorbasierte Abhängigkeitsinjektion in Ihren Bohnen. Verwenden Sie immer Behauptungen für obligatorische Abhängigkeiten."

Übersetzung:

Spring empfiehlt: "Stellen Sie immer eine Abhängigkeitsinjektion mit Konstruktoren in Ihrer Bohne her. Verwenden Sie immer Behauptungen, um Abhängigkeiten zu erzwingen".


Originaltext:

Modifizierte Schreibweise:



PS: Die Initialisierungsreihenfolge von Java-Variablen ist: statische Variablen oder statische Anweisungsblöcke – > Instanzvariablen oder Initialisierungsanweisungsblöcke – >Konstruktionsmethode – >@Autowired

Warum also den letzten Typ zur Mitgliedsvariable hinzufügen?

Im Internet gibt es eine folgende Erklärung: Der Umfang der Standardbohne in der Frühlingskonfiguration ist Singleton, was nach dem Start immer vorhanden ist. Deklarieren Sie das Objekt der Bohne dynamisch erstellt, indem Sie die Scope-Eigenschaft auf Prototype setzen. Wenn dein Dienst selbst jedoch ein Singleton ist, wird die Injektion nur einmal ausgeführt.

@Autowired selbst ein Singleton-Modus ist, wird er nur einmal beim Programmstart ausgeführt und initialisiert kein zweites Mal, selbst wenn kein Final definiert wird, sodass dieses Final bedeutungslos ist.

Dies kann dazu dienen, zu verhindern, dass der Konstruktor während der Ausführung des Programms erneut ausgeführt wird;

Oder vielleicht ist es leichter zu verstehen, außerdem initialisiert Final nur einmal, wenn das Programm beginnt.






Vorhergehend:Spring Boot+Maven, um Projekte schnell zu bauen
Nächster:2018 China Internet Memorabilia veröffentlicht
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com