मैं क्रेडिट के बारे में मैं "नल-मूल्य" पता नहीं था के रूप में @nosebrain दे, लेकिन मैं पूरी तरह विशेष रूप से शून्य मान का उपयोग कर से बचने के लिए के बाद से पसंद करते हैं अपने गुण फ़ाइल में null
का प्रतिनिधित्व करना मुश्किल है।
लेकिन यहां null-value
के साथ शून्य का उपयोग करने का विकल्प है, इसलिए यह कभी भी संपत्ति प्लेसहोल्डर के साथ काम करेगा।
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;
}
}
निजी तौर पर मैं अपने रास्ते को पसंद करते हैं क्योंकि हो सकता है बाद में आप चाहते हैं stuff.value
एक अल्पविराम से अलग-मूल्य होने के लिए या शायद Enum करने के लिए स्विच आसान है। यूनिट टेस्ट के लिए यह भी आसान है :)
संपादित करें: एनम्स का उपयोग करने और नल का उपयोग न करने की मेरी राय के आधार पर आपकी टिप्पणियों के आधार पर।
@Component
public class MyObject {
@Value("${crap:NOTSET}")
private Crap crap;
public enum Crap {
NOTSET,
BLAH;
}
}
उपर्युक्त मेरे लिए ठीक काम करता है। आप शून्य से बचें। यदि आपकी प्रॉपर्टी फाइलें स्पष्ट रूप से सेट करना चाहते हैं कि वे इसे संभालना नहीं चाहते हैं तो आप (करते हैं लेकिन आपको इसे निर्दिष्ट करने की भी आवश्यकता नहीं है क्योंकि यह NOTSET पर डिफ़ॉल्ट होगा)।
crap=NOTSET
null
बहुत खराब है और NOTSET
से अलग है। इसका मतलब है वसंत या यूनिट परीक्षण ने इसे सेट नहीं किया है, यही कारण है कि आईएमएचओ एक अंतर है। मैं अभी भी सेटटर नोटेशन (पिछला उदाहरण) का उपयोग कर सकता हूं क्योंकि यूनिट टेस्ट के लिए आसान है (यूनिट टेस्ट में निजी चर सेट करना मुश्किल है)।
स्रोत
2012-08-16 20:55:24
जावा कॉन्फ़िगरेशन इसके बराबर क्या है? –
http://stackoverflow.com/questions/9347929/spring-set-a-property-only-if-the-value-is-not- $ {some.param: # {null}} का उपयोग करके कोई भी उल्लेख नहीं है, और वह nullValue सेट किए बिना मेरे लिए काम किया, ऐसा लगता है कि यह डिफ़ॉल्ट है? (स्प्रिंग बूट एप्लिकेशन में।) – vorburger
स्पेल $ {stuff.value: # {null}} की सरल उपयोग शक्ति vorburger द्वारा सुझाए गए अनुसार और http://stackoverflow.com/questions/16735141/specify-default-property- मूल्य-के-नल-इन-वसंत – csf