Lesen Sie die Konfiguration wie ein Profi auf Spring
Jan 23, 2025 pm 12:05 PMEinführung
Wie wir alle wissen, bietet Spring mehrere Möglichkeiten, dasselbe Ziel zu erreichen. Eine davon ist das Abrufen der in der Konfigurationsdatei registrierten Werte.
Wenn Sie neu bei Spring sind, stoßen Sie möglicherweise auf Code, der die Annotation @Value
verwendet, um Werte aus einer Datei application.properties
oder application.yml
abzurufen. Wenn Sie diesen Ansatz verwenden, sollten Sie sich darüber im Klaren sein, dass daran nichts auszusetzen ist, Sie jedoch möglicherweise unnötige Komplexität in Ihre Anwendung einbringen.
@Value
Frage
Das Hauptproblem bei der Verwendung von @Value
besteht im Umgang mit Variablen, die andere Werte enthalten. Macht das Sinn? nicht verstehen? Schauen wir uns ein Beispiel an:
Angenommen, Sie haben die folgende Konfigurationsdatei:
<code>mail.user=dev@locahost mail.password=123 mail.headers.x-from=Ekerdev mail.headers.x-custom=custom</code>
Sie müssen es so machen:
@Service public class CustomService { @Value("${mail.user}") private String user; @Value("${mail.password}") private String password; @Value("${mail.headers.x-from}") private String xFrom; @Value("${mail.headers.x-custom}") private String xCustom; }
Bisher keine Probleme. Stellen Sie sich nun vor, dass Ihre Anwendung dieselben Variablen an mehreren Stellen in Ihrem Code verwenden muss. Überlegen Sie, wie viel doppelter Code wir bekommen würden, oder?
Lösung
Die beste Lösung ist also die Verwendung der Annotation @ConfigurationProperties
. Dies erleichtert unserer Anwendung das Einfügen von Variablen in Klassen und wir können sie wie jede andere Abhängigkeit in Spring verwenden, wie im folgenden Beispiel gezeigt:
Spring 3.x-Lösung eins:
@Configuration @ConfigurationProperties("mail") public record MailProperties( String user, String password, Map<String, String> headers ) {}
Spring 3.x-Lösung zwei:
@Configuration @ConfigurationProperties("mail.headers") public record MailHeadersProperties( String xFrom, String xCustom ) {} @Configuration @ConfigurationProperties("mail") public record MailProperties( String user, String password, MailHeadersProperties headers ) {}
Spring 2.x-Lösung eins:
@Data @AllArgsConstructor @ConfigurationPropertiesScan @ConfigurationProperties("mail") public class MailProperties { private String user; private String password; private Map<String, String> headers; }
@SpringBootApplication @ConfigurationPropertiesScan("your.package.mailproperties") //your.package.mailproperties 替换成你的包路径 public class ExampleApplication { public static void main(String[] args) { SpringApplication.run(ExampleApplication.class, args); } }
Ihre Servicenutzungsattribute lauten wie folgt:
@Service @RequiredArgsConstructor public class CustomService { private final MailProperties mailProperties; }
Vorteile
Der Hauptvorteil der Verwendung von @ConfigurationProperties
besteht darin, dass wir nicht nach der @Value
-Annotation im Code suchen müssen, was die Lesbarkeit des Codes erleichtert.
Das obige ist der detaillierte Inhalt vonLesen Sie die Konfiguration wie ein Profi auf Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?
