Spring - How do you set Enum keys in a Map with annotations -
मेरे पास एक Enum class
सार्वजनिक enum MyEnum {ABC; }
मेरे 'मिक' वर्ग की तुलना में यह संपत्ति है
<पूर्व> निजी मानचित्र & lt; MyEnum, OtherObj & gt; myMap;
मेरे पास यह वसंत एक्सएमएल कॉन्फ़िगरेशन है।
& lt; util: map id = "mymap" & gt; & Lt; एंट्री कुंजी = "एबीसी" मान-रिफ = "माइऑज़" / & gt; & Lt; / util: मानचित्र & gt; & Lt; बीन आईडी = "मिक" वर्ग = "com.x.Mick" & gt; & Lt; प्रॉपर्टी नाम = "myMap" रिफ = "माईमॅप" / & gt; & Lt; / सेम & gt;
और यह ठीक है।
मैं स्प्रिंग एनोटेशन के साथ इस XML कॉन्फ़िगरेशन को बदलना चाहूंगा।
क्या आपको मैप पर कब्जा करने के बारे में कोई विचार है? < यहां समस्या यह है कि अगर मैं एक्सएमएल कॉन्फ़िग से @ एटोवायर एनोटेशन (मिक क्लास के आईमैप विशेषता पर) से स्विच करता हूं तो स्प्रिंग इस अपवाद को फेंक रहा है
नेस्टेड अपवाद org.springframework.beans.FatalBeanException: मानचित्र का मुख्य प्रकार [class com.MyEnum] [java.util.Map] को [java.lang.String] के लिए असाइन किया जाना चाहिए
स्प्रिंग एबीसी को माइएनम। एबीसी ऑब्जेक्ट के रूप में पहचानने में सक्षम नहीं है।
कोई विचार?
धन्यवाद
यह मेरे लिए काम किया .. ।
मेरा स्प्रिंग अनुप्रयोग संदर्भ:
& lt; util: map id = "myMap" & gt; & Lt; प्रविष्टि कुंजी = "# {टी (com.acme.MyEnum) .ELEM1}" मान = "मान 1" / & gt; & Lt; प्रविष्टि कुंजी = "# {टी (com.acme.MyEnum) .ELEM2}" मान = "मान 2" / & gt; & Lt; / util: मानचित्र & gt;
मेरा वर्ग जहां मानचित्र
इंजेक्ट हो जाता है:
सार्वजनिक वर्ग MyClass {निजी @ रिसोर्स मानचित्र & lt; MyEnum, String & gt; myMap; }
नोट करने के लिए महत्वपूर्ण बात यह है कि स्प्रिंग प्रसंग में मैंने स्पेल (स्प्रिंग एक्सप्रेशन लैंग्वेज) का इस्तेमाल किया है जो केवल संस्करण 3.0 के बाद से उपलब्ध है। और मेरी कक्षा में मैंने @ रिसोर्स
, न तो @ इंजेक्ट
का उपयोग किया (यह मेरे लिए काम नहीं करता) और न ही @ ऑटोवायर
(मैंने नहीं किया इसे इस्तेमाल करे)। केवल अंतर मैं @ रिसोर्स
और @Autowired
के बीच से अवगत हूं, यह है कि बीन नाम से पूर्व ऑटो इंजेक्शन है, जबकि बाद में इसे बीन प्रकार से किया जाता है।
आनंद लें!
Comments
Post a Comment