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

Konfigurasi membaca seperti profesional pada Spring

Mary-Kate Olsen
Lepaskan: 2025-01-23 12:05:13
asal
415 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
<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>
Salin selepas log masuk

Atribut penggunaan perkhidmatan anda adalah seperti berikut:

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan