Heim > Java > javaLernprogramm > Lesen Sie die Konfiguration wie ein Profi auf Spring

Lesen Sie die Konfiguration wie ein Profi auf Spring

Mary-Kate Olsen
Freigeben: 2025-01-23 12:05:13
Original
445 Leute haben es durchsucht

Reading configuration like a pro on Spring

Einfü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.

@ValueFrage

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

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

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

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

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;
}
Nach dem Login kopieren
@SpringBootApplication
@ConfigurationPropertiesScan("your.package.mailproperties") //your.package.mailproperties  替换成你的包路径
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}
Nach dem Login kopieren

Ihre Servicenutzungsattribute lauten wie folgt:

@Service
@RequiredArgsConstructor
public class CustomService {
    private final MailProperties mailProperties;
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage