Saya memiliki yang berikut di Spring bean:
@Value("${myValue}")
private String value;
Nilai diinjeksikan dengan benar. Namun, variabel harus opsional, ia diteruskan sebagai parameter baris perintah (yang kemudian ditambahkan ke konteks Spring menggunakan SimpleCommandLinePropertySource ), dan argumen ini tidak akan selalu ada.
Saya telah mencoba kedua hal berikut untuk memberikan nilai default:
@Value("${myValue:}")
@Value("${myValue:DEFAULT}")
tetapi dalam setiap kasus, argumen default setelah titik dua dimasukkan bahkan ketika ada nilai sebenarnya - ini muncul menggantikan apa yang harus dimasukkan Spring.
Apa cara yang benar untuk menentukan bahwa @Value tidak diperlukan?
Terima kasih
spring
spring-bean
pengguna1052610
sumber
sumber
@Value("${some.prop:}")
bekerja untuk saya. Itu adalah satu-satunya Penjelasan pada variabel itu.Jawaban:
Bekerja dengan asumsi bahwa dengan 'tidak diperlukan' yang Anda maksud
null
maka ...Anda telah mencatat dengan benar bahwa Anda dapat memberikan nilai default di sebelah kanan
:
karakter. Contoh Anda adalah@Value("${myValue:DEFAULT}")
.Anda tidak terbatas pada string biasa sebagai nilai default. Anda dapat menggunakan ekspresi SPEL , dan ekspresi SPEL sederhana untuk dikembalikan
null
adalah:sumber
Jika Anda menggunakan Java 8, Anda dapat memanfaatkan
java.util.Optional
kelasnya. Anda hanya perlu mendeklarasikan variabel dengan cara ini:Kemudian, Anda dapat memeriksa apakah nilainya ditentukan atau tidak dengan cara yang lebih baik:
Semoga membantu!
sumber
Optional
tipe di bidang kelas.value
adalah nol.