2009-05-17 7 views
173

क्या स्प्रिंग कॉन्फ़िगरेशन फ़ाइल में <bean> तत्व पर विशेषता और name विशेषता का उपयोग करने के बीच कोई अंतर है?स्प्रिंग कॉन्फ़िगरेशन फ़ाइल में बीन आईडी और नाम का उपयोग करने के बीच अंतर

+8

प्रश्नों के आधार पर यह सरल और उत्तर इतना सरल और व्यापक है। महान। धन्यवाद! –

उत्तर

113
Spring reference से

, 3.2.3.1 Naming Beans:

हर सेम एक या अधिक आईडी (यह भी कहा जाता है पहचानकर्ता, या नाम, इन मामले एक ही बात को देखें) है। ये आईडी कंटेनर सेम में होस्ट किया गया है के भीतर अद्वितीय होना चाहिए। एक सेम लगभग हमेशा सिर्फ एक ही आईडी होगा, लेकिन अगर एक सेम एक से अधिक आईडी है, अतिरिक्त लोगों को अनिवार्य रूप से माना उपनाम हो सकता है।

XML- आधारित विन्यास मेटाडाटा का उपयोग करते समय, आप 'आईडी' या 'नाम' सेम पहचानकर्ता (रों) निर्दिष्ट करने के लिए विशेषताओं का उपयोग। 'Id' विशेषता आप ठीक एक आईडी, निर्दिष्ट कर सकते हैं और के रूप में यह एक वास्तविक XML तत्व आईडी विशेषता है, XML पार्सर कुछ अतिरिक्त सत्यापन करने के लिए अन्य तत्वों आईडी संदर्भ जब सक्षम है; इस प्रकार, एक बीन आईडी निर्दिष्ट करने का पसंदीदा तरीका है। हालांकि, एक्सएमएल विनिर्देश उन वर्णों को सीमित करता है जो XML आईडी में कानूनी हैं। यह आमतौर पर नहीं की कोई समस्या है, लेकिन अगर आप एक की जरूरत इन विशेष एक्सएमएल पात्रों में से एक का उपयोग करें, या चाहते हैं कि सेम के लिए अन्य उपनाम लागू करने के लिए है, तो आप भी या बजाय एक या अधिक सेम आईडी निर्दिष्ट कर सकता है, एक अल्पविराम (,), अर्धविराम (;), या 'नाम' विशेषता में सफेद जगह से अलग किया गया।

तो मूल रूप से id विशेषता एक्सएमएल आईडी गुण मानकों के अनुरूप जबकि name थोड़ा और अधिक लचीला है। आम तौर पर, मैं name का उपयोग बहुत अधिक विशेष रूप से करता हूं। यह बस "वसंत-वाई" लगता है।

+39

आप "नाम" विशेषता का उपयोग करना पसंद करते हैं भले ही आपने उद्धृत किया गया स्प्रिंग संदर्भ "आईडी" विशेषता का उपयोग करने की सिफारिश करता है? यहां तक ​​कि यदि आप "नाम" से चिपकना पसंद करते हैं, तो आप इसे "स्प्रिंग-वाई" नहीं कह सकते हैं यदि वसंत संदर्भ अन्यथा सुझाता है :) यह नाटकीय है, मुझे पता है;) – theadam

39

कोई भी काम करेगा। यह आपकी आवश्यकताओं पर निर्भर करता है:
यदि आपके बीन पहचानकर्ता में विशेष वर्ण (/viewSummary.html) शामिल हैं, तो इसे बीन id के रूप में अनुमति नहीं दी जाएगी, क्योंकि यह वैध XML आईडी नहीं है। ऐसे मामलों में आप बीन id को परिभाषित कर सकते हैं और इसके बजाय बीन name की आपूर्ति कर सकते हैं।
name विशेषता आपके बीन के लिए alias ईएस को परिभाषित करने में भी मदद करती है, क्योंकि यह किसी दिए गए बीन के लिए एकाधिक पहचानकर्ता निर्दिष्ट करने की अनुमति देती है।

+1

प्लस वन इसे अपने शब्दों में और देने के लिए एक उदाहरण क्यों विशेष पात्रों की आवश्यकता हो सकती है। –

+0

धन्यवाद। इसकी प्रशंसा करना। – pugmarx

67

वसंत 3.1 के बाद से id विशेषता xsd:string है और name विशेषता के रूप में वर्णों की एक ही श्रृंखला को अनुमति देता है।

एक id और एक name के बीच फर्क सिर्फ इतना है कि एक name एक अल्पविराम, अर्धविराम या खाली स्थान के द्वारा अलग से अधिक अलियास हो सकते हैं, जबकि एक id एक भी मान होना चाहिए है।

वसंत 3 से।2 प्रलेखन:

एक्सएमएल-आधारित कॉन्फ़िगरेशन मेटाडेटा में, आप बीन पहचानकर्ता निर्दिष्ट करने के लिए आईडी और/या नाम विशेषताओं का उपयोग करते हैं। आईडी विशेषता आपको बिल्कुल एक आईडी निर्दिष्ट करने की अनुमति देती है। परंपरागत रूप से ये नाम अल्फान्यूमेरिक ('myBean', 'fooService', आदि) हैं, लेकिन विशेष वर्ण भी हो सकते हैं। यदि आप बीन के लिए अन्य उपनामों को पेश करना चाहते हैं, तो आप उन्हें नाम विशेषता में भी निर्दिष्ट कर सकते हैं, जिसे अल्पविराम (,), अर्धविराम (;), या सफेद स्थान से अलग किया जाता है। एक ऐतिहासिक नोट के रूप में, स्प्रिंग 3.1 से पहले के संस्करणों में, आईडी विशेषता को एक xsd: आईडी के रूप में टाइप किया गया था, जो संभव वर्णों को बाधित करता था। 3.1 के रूप में, यह अब xsd है: स्ट्रिंग। ध्यान दें कि बीन आईडी विशिष्टता अभी भी कंटेनर द्वारा लागू की गई है, हालांकि अब एक्सएमएल पार्सर्स द्वारा नहीं।

संबंधित मुद्दे