मैं निम्नलिखित क्षेत्र @Value
साथ एनोटेट है, एक डिफ़ॉल्ट मान को निर्दिष्ट:स्प्रिंग @value एनोटेशन लागू न्यूनतम अधिकतम पूर्णांक
@Value("${tolerance.percentage:25}")
private int tolerance;
कि कोड को ठीक प्रणाली संपत्ति "tolerance.percentage" के लिए फ़ील्ड का मान initializes अगर वह प्रोप मौजूद है। यह मौजूद नहीं है, तो यह 25
को चूक मैं एक कदम आगे जाना चाहता हूँ, हालांकि, इस पूर्णांक मैदान पर एक न्यूनतम और अधिकतम लागू करने, के बाद से यह एक प्रतिशत एक पूरी संख्या के रूप में कम से कम 100 का प्रतिनिधित्व करता है के द्वारा, और मर्फी का कानून है कि कोई (शायद मुझे) संपत्ति को बाहरी रूप से गलत तरीके से कॉन्फ़िगर कर सकता है और मेरा ऐप रनटाइम पर अजीब चीजें करना शुरू कर देगा, जो मेरी पसंद के लिए बहुत देर हो चुकी है। यदि संपत्ति स्टार्टअप पर संपत्ति "101" या "-1" पर सेट की गई है तो मुझे एक त्रुटि फेंकना होगा। हेक, अगर मैं इसे @Value
एनोटेशन में 101 तक डिफॉल्ट करने का प्रयास करता हूं, तो मुझे एक त्रुटि फेंकना भी पसंद है, लेकिन यह इस प्रश्न के प्रयोजनों के लिए महत्वपूर्ण नहीं है। यहाँ मैं क्या करने की कोशिश की है:
//@Min and @Max don't produce the intended behavior when combined with @Value
@Min(0)
@Max(100)
@Value("${tolerance.percentage:25}")
private int tolerance;
मैं एक int
मैदान पर एक न्यूनतम और अधिकतम लागू कर सकते हैं कि @Value
के बारे में पता है?
'@ मान' (यदि आपको लगता है कि सेम के रूप में स्टार्ट-अप समय में मूल्य injects एकमात्र के लिए, यकीन नहीं। 'prototype'); मुझे नहीं लगता कि आप सेम मान्यता उस समय (स्वतः) शुरू हो रहा होगा ... –
आप केवल' @ ConfigurationProperties' कक्षाओं में मान्यता नियमित कक्षाओं में नहीं मिलेगा आप उन मूल्यों को मान्य करने के लिए चाहते हैं। सीमा की जाँच करें। या निर्माता को इसकी सुई और वहाँ में मान्यता है। –
@ M.Deinum जोड़ना मेरी POJO को '@ ConfigurationProperties' के लिए एक' @ PostConstruct' विधि जोड़ने के लिए काम किया। यह जोड़ने के बाद, टिप्पणी के रूप में साथ काम करना शुरू मैंने सोचा कि वे करेंगे। अगर आप अपनी टिप्पणी औपचारिक रूप से करते हैं एक जवाब में, मैं इसे स्वीकार करूंगा। – JellyRaptor