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.
public class MyObject {
private String value;
@Value("${stuff.value:@null}")
public void setValue(String value) {
if ("@null".equals(value)) this.value = null;
else this.value = value;
}
}
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.
@Component
public class MyObject {
@Value("${crap:NOTSET}")
private Crap crap;
public enum Crap {
NOTSET,
BLAH;
}
}
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 ).
crap=NOTSET
null
sangat buruk dan berbeda dari NOTSET
. 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).