Menggunakan Spring @Value with Defaults

1. Gambaran keseluruhan

Anotasi Spring @Value memberikan cara mudah untuk menyuntik nilai harta benda ke dalam komponen. Ia juga berguna untuk memberikan lalai yang wajar untuk kes di mana harta tanah mungkin tidak ada .

Itulah yang akan kita fokuskan dalam artikel ini - bagaimana menentukan nilai lalai untuk anotasi @Value Spring. Untuk panduan ringkas yang lebih terperinci mengenai @Value , lihat artikel di sini.

2. Piawai Rentetan

Mari lihat sintaks asas untuk menetapkan nilai lalai untuk harta String :

@Value("${some.key:my default value}") private String stringWithDefaultValue; 

Sekiranya some.key tidak dapat diselesaikan, maka stringW ithDefaultValue akan ditetapkan ke nilai lalai " nilai lalai saya" .

Begitu juga, kita boleh menetapkan String panjang sifar sebagai nilai lalai:

@Value("${some.key:})" private String stringWithBlankDefaultValue;

3. Primitif

Untuk menetapkan nilai lalai untuk jenis primitif seperti boolean dan int , kami menggunakan nilai literal:

@Value("${some.key:true}") private boolean booleanWithDefaultValue;
@Value("${some.key:42}") private int intWithDefaultValue; 

Sekiranya kita mahu, kita dapat menggunakan pembungkus primitif sebagai gantinya dengan mengubah jenisnya menjadi Boolean dan Integer .

4. Susunan

Kami juga boleh memasukkan senarai nilai yang dipisahkan koma ke dalam array:

@Value("${some.key:one,two,three}") private String[] stringArrayWithDefaults; @Value("${some.key:1,2,3}") private int[] intArrayWithDefaults;

Dalam contoh pertama di atas, nilai " satu" , " dua" , dan " tiga" disuntikkan sebagai lalai ke stringArrayWithDefaults .

Dalam contoh kedua, nilai 1, 2, dan 3 disuntikkan sebagai lalai ke intArrayWithDefaults .

5. Menggunakan SpEL

Kita juga dapat menggunakan Spring Expression Language (SpEL) untuk menentukan ungkapan dan default.

Dalam contoh di bawah, kami menjangkakan some.system.key akan ditetapkan sebagai harta sistem, dan jika tidak ditetapkan, kami ingin menggunakan " nilai harta sistem lalai saya" sebagai lalai:

@Value("#{systemProperties['some.key'] ?: 'my default system property value'}") private String spelWithDefaultValue;

6. Kesimpulannya

Dalam artikel ringkas ini, kami melihat bagaimana kami dapat menetapkan nilai lalai untuk harta tanah yang nilainya ingin kami suntik menggunakan anotasi Spring's @Value .

Seperti biasa, semua contoh kod yang digunakan dalam artikel ini terdapat dalam projek GitHub.