Saat ini saya menggunakan anotasi @Value Spring 3.1.x seperti ini:
@Value("${stuff.value:}")
private String value;
Ini menempatkan String kosong ke dalam variabel jika atribut tidak ada. Saya ingin memiliki null sebagai default, bukan String kosong. Tentu saja saya juga ingin menghindari error saat property stuff.value tidak diset.
java
spring
spring-annotations
Kevin Schmidt
sumber
sumber
Ini benar-benar tua, tetapi Anda dapat menggunakan Spring EL sekarang, misalnya
@Value("${stuff.value:#{null}}")
Lihat pertanyaan ini .
sumber
Terima kasih kepada @vorburger:
akan menyetel nilai string ke null tanpa konfigurasi lain.
sumber
Saya memberikan kredit @nosebrain karena saya tidak tahu tentang "nilai-nol" tetapi saya lebih suka menghindari menggunakan nilai-nilai nol sama sekali terutama karena sulit untuk mewakili
null
dalam file properti.Tapi di sini adalah alternatif menggunakan null tanpa
null-value
sehingga akan bekerja dengan placeholder properti apa pun.Secara pribadi saya lebih suka cara saya karena mungkin nanti Anda ingin
stuff.value
menjadi nilai dipisahkan Koma atau mungkin untuk Enum beralih lebih mudah. Ini juga lebih mudah untuk menguji unit :)EDIT: berdasarkan komentar Anda tentang penggunaan enum dan pendapat saya tentang tidak menggunakan null.
Di atas berfungsi dengan baik untuk saya. Anda menghindari nol. Jika file properti Anda ingin menetapkan secara eksplisit bahwa mereka tidak ingin menanganinya maka Anda harus melakukannya ( tetapi Anda bahkan tidak perlu menentukan ini karena akan default ke NOTSET ).
null
sangat buruk dan berbeda dariNOTSET
. Itu berarti pegas atau uji unit tidak mengaturnya, itulah sebabnya ada IMHO perbedaan. Saya mungkin masih akan menggunakan notasi penyetel (contoh sebelumnya) karena lebih mudah untuk pengujian unit (variabel pribadi sulit untuk ditetapkan dalam pengujian unit).sumber
@Value("${stuff.value:NOTSET}")
berhasil?Jika Anda perlu memasukkan string kosong (0 panjang) "" sebagai @Value default - gunakan SPEL (bahasa ekspresi pegas) sebagai berikut:
# {''} hanya memberi Anda string kosong sebagai nilai default @ Value yang dimasukkan.
oleh yl
sumber