Rumah >Java >javaTutorial >Konfigurasi membaca seperti profesional pada Spring

Konfigurasi membaca seperti profesional pada Spring

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-23 12:05:13445semak imbas

Reading configuration like a pro on Spring

Pengenalan

Seperti yang kita sedia maklum, Spring menyediakan pelbagai cara untuk mencapai matlamat yang sama, salah satunya ialah cara mendapatkan semula nilai yang didaftarkan dalam fail konfigurasi.

Jika anda baru menggunakan Spring, anda mungkin menjumpai kod yang menggunakan anotasi @Value untuk mendapatkan semula nilai daripada fail application.properties atau application.yml. Jika anda menggunakan pendekatan ini, sedar bahawa tidak ada yang salah dengannya, bagaimanapun, anda mungkin memperkenalkan kerumitan yang tidak perlu ke dalam aplikasi anda.

@Value Soalan

Masalah utama menggunakan @Value ialah apabila berurusan dengan pembolehubah yang mengandungi nilai lain. Adakah ini masuk akal? tak faham? Mari lihat contoh:

Anggap anda mempunyai fail konfigurasi berikut:

<code>mail.user=dev@locahost
mail.password=123
mail.headers.x-from=Ekerdev
mail.headers.x-custom=custom</code>

Anda perlu melakukannya seperti ini:

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

Setakat ini, tiada masalah. Tetapi sekarang bayangkan bahawa aplikasi anda perlu menggunakan pembolehubah yang sama ini di berbilang tempat dalam kod anda. Fikirkan tentang berapa banyak kod pendua yang kita akan dapat, bukan?

Penyelesaian

Jadi penyelesaian terbaik ialah menggunakan @ConfigurationProperties anotasi. Ini memudahkan aplikasi kami untuk menyuntik pembolehubah ke dalam kelas dan kami boleh menggunakannya seperti pergantungan lain dalam Spring, seperti yang ditunjukkan dalam contoh di bawah:

Penyelesaian Spring 3.x satu:

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

Penyelesaian musim bunga 3.x dua:

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

Penyelesaian Spring 2.x satu:

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

Atribut penggunaan perkhidmatan anda adalah seperti berikut:

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

Kelebihan

Kelebihan utama menggunakan @ConfigurationProperties ialah kita tidak perlu mencari @Value anotasi dalam kod, yang menjadikan kod lebih mudah dibaca.

Atas ialah kandungan terperinci Konfigurasi membaca seperti profesional pada Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn