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

Lesen Sie die Konfiguration wie ein Profi auf Spring

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-23 12:05:13443Durchsuche

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>

Sie müssen es so machen:

<code class="language-java">@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;
}</code>

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:

<code class="language-java">@Configuration
@ConfigurationProperties("mail")
public record MailProperties(
    String user,
    String password,
    Map<String, String> headers
) {}</code>

Spring 3.x-Lösung zwei:

<code class="language-java">@Configuration
@ConfigurationProperties("mail.headers")
public record MailHeadersProperties(
    String xFrom,
    String xCustom
) {}

@Configuration
@ConfigurationProperties("mail")
public record MailProperties(
    String user,
    String password,
    MailHeadersProperties headers
) {}</code>

Spring 2.x-Lösung eins:

<code class="language-java">@Data
@AllArgsConstructor
@ConfigurationPropertiesScan
@ConfigurationProperties("mail")
public class MailProperties {
    private String user;
    private String password;
    private Map<String, String> headers;
}</code>
<code class="language-java">@SpringBootApplication
@ConfigurationPropertiesScan("your.package.mailproperties") //your.package.mailproperties  替换成你的包路径
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}</code>

Ihre Servicenutzungsattribute lauten wie folgt:

<code class="language-java">@Service
@RequiredArgsConstructor
public class CustomService {
    private final MailProperties mailProperties;
}</code>

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!

Stellungnahme:
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