मैं कुछ स्प्रिंग कोड की समीक्षा कर रहा हूं, और मुझे कुछ बीन डीफ़ दिखाई देता है जिनके पास आईडी या नाम नहीं है। जिस व्यक्ति ने इसे किया वह पूछने के लिए नहीं है। आवेदन ठीक काम कर रहा है। मुझे परिचित नहीं है कि इसका क्या अर्थ है। किसी को भी पता है कि इसका मतलब विशेष रूप से कुछ भी है?कोई आईडी या नाम के साथ वसंत बीन
उत्तर
कुछ बीन्स को संदर्भ फ़ाइल या प्रोग्रामेटिक रूप से अन्य बीन्स द्वारा एक्सेस करने की आवश्यकता नहीं है। तो जैसा कि जैकब एम द्वारा उल्लिखित है, उन्हें किसी आईडी या नाम की आवश्यकता नहीं है क्योंकि उनका संदर्भ नहीं दिया गया है।
ऐसा उदाहरण PropertyPlaceholderConfigurer होगा, जो एक प्रॉपर्टी फ़ाइल पढ़ता है, फिर संदर्भ परिभाषा में रनटाइम संपत्ति प्रतिस्थापन की अनुमति देता है।
उदाहरण परिभाषा
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="myapp.properties" />
</bean>
JavaDoc इस वस्तु पर आगे प्रलेखन प्रदान करता है हो सकता है, लेकिन आगे की फ़ाइल में पर तुम सिर्फ मानक टेम्पलेट प्लेसहोल्डर $ की जगह {उपयोग करके अपनी फ़ाइल से गुण संदर्भित कर सकते हैं .. ।}।
एक संभावना यह है कि आप एक बीन को जगह में परिभाषित कर सकते हैं, और इसलिए आपको किसी आईडी से इसकी आवश्यकता नहीं है क्योंकि आपको इसे कहीं और से संदर्भित करने की आवश्यकता नहीं है।
<bean id="foo" class="Foo">
<property name="bar">
<bean class="Bar">
</property>
</bean>
बार सेम क्योंकि यह केवल यह है कि एक गुण सेट करने के लिए प्रयोग किया जाता है एक नाम की जरूरत नहीं है: मैं एक फू उद्देश्य यह है कि एक बार संपत्ति लेता है कहो।
आईडी और नाम विशेषताएँ वैकल्पिक हैं और इन्हें अन्य परिभाषाओं से बीन परिभाषा का संदर्भ देने के लिए उपयोग किया जाता है। अधिक जानकारी के लिए official Spring documentation पर देखें।
ऑटो-वायरिंग की संभावना की जांच करें। एक अन्य बीन टाइप किए गए ऑटोवायर संपत्ति को सेट करके अज्ञात बीन का संदर्भ दे सकता है।
यह सिर्फ एक अनुमान है। एक ठोस उदाहरण के बिना, मैं और नहीं कह सकता।
आईडी या नाम के बिना बीन्स को अभी भी कक्षा के नाम से संदर्भित किया जा सकता है। स्प्रिंग उन बीन्स को स्वचालित रूप से कक्षा के नाम का उपयोग कर नाम देती है और यदि एक ही कक्षा के एक से अधिक बीन हैं तो यह उनके लिए एक संख्या जोड़ता है। बेनामी बीन्स आमतौर पर एक संपत्ति टैग के अंदर परिभाषित किया जाता है, लेकिन अगर वे वहां हैं तो शायद कुछ अन्य बीन्स में ऑटोवॉयरिंग कॉन्फ़िगर किया गया हो। वैसे भी, मुझे लगता है कि उन बीन्स में एक नाम या आईडी जोड़ना आपके आवेदन को तोड़ नहीं देगा।
ऊपर वर्णित कुछ लोगों के रूप में, सभी बीन-हथियार नाम/आईडी पर आधारित नहीं है; इसमें से कुछ प्रकार पर आधारित है। उदाहरण के लिए, वहाँ एक तरीका है
BeanFactoryUtils.beansOfTypeIncludingAncestors (...)
है कि कुछ दिया प्रकार के सभी सेम पकड़ लेता है। इसका उपयोग उदाहरण के लिए बीन्स को खोजने के लिए स्प्रिंग वेब एमवीसी डिस्पैचर सर्वलेट (कई अन्य स्थानों के बीच) द्वारा किया जाता है, जैसे हैंडलर मैपिंग्स, हैंडलरएडाप्टर, हैंडलरएक्सप्शन रिसेल्वर और बहुत आगे। उन मामलों के साथ तुलना करें जहां बीन के पास एक विशिष्ट प्रसिद्ध नाम/आईडी होना चाहिए, जैसे लोकेल रेसॉल्वर (आईडी "लोकेल रिसेल्वर" होना चाहिए या यह नहीं मिलेगा) और थीमरोलॉल्वर (आईडी "थीम रेसोलवर" होनी चाहिए या यह नहीं मिलेगा)।
बीन्स नाम और आईडी के बिना परिभाषित, एक उत्पन्न ID (पूर्ण पैकेज नाम और वर्ग के नाम) के साथ पहुँचा जा सकता है उदाहरण के लिए:
सेम
<bean class="pl.finsys.initOrder.TestBeanImpl">
के रूप में परिभाषित किया जा सकता
द्वाराTestBean bean = (TestBean) ctx.getBean("pl.finsys.initOrder.TestBeanImpl");
// बीन cfg फ़ाइल
<bean class="com.ds.DemoBean"> <property name="msg" value="Hello"/> </bean>
// हम उपयोग कर सकते हैं
वस्तु obj = factory.getBean ("com.ds.DemoBe
अपने जावा बीन Id..If प्रदान करने के लिए हम बीन आईडी प्रदान नहीं कर रहे एक अनिवार्य नहीं, हमारे कंटेनर डिफ़ॉल्ट बीन आईडी प्रदान करता है। डीफॉल्ट बीन आईडी "(पैकेज नाम) जैसा दिखता है। (बीन क्लास नाम) # एन" जहां एन = 0,1,2, ...... आदि।
ऐसा लगता है कि अनामित और नामित बीन व्यवहार के बीच एक सूक्ष्म अंतर है। यदि आपके पास एक XML कॉन्फ़िगरेशन फ़ाइल दो बार आयात की गई है, तो प्रत्येक नामित बीन केवल एक बार बनाया जाएगा, लेकिन एक अनाम बीन इसकी परिभाषा शामिल होने के साथ कई बार बनाई जाएगी। इस तरह के बीन को टाइप करने की कोशिश करते समय, यह इस तरह की त्रुटियों की ओर जाता है:
No qualifying bean of type [your.class.Name] is defined: expected single matching bean but found 4
- 1. वसंत के ओवरराइडिंग बीन
- 2. वसंत बीन ऊर्फ उपयोग
- 3. वसंत में बीन कॉन्फ़िगरेशन ओवरराइडिंग
- 4. वसंत: एक बीन
- 5. वसंत में बीन के अंदर से एक बीन की आईडी कैसे प्राप्त करें?
- 6. वसंत एओपी अतिरिक्त बीन
- 7. एनोटेशन-निर्दिष्ट बीन नाम मौजूदा, गैर-संगत बीन डीफ़
- 8. वसंत - पकड़ बीन निर्माण अपवाद
- 9. वसंत बीन प्रारंभिकरण का आदेश
- 10. नियंत्रक (वसंत प्रबंधित बीन) स्कोप प्रश्न: सिंगलटन, अनुरोध या सत्र?
- 11. वसंत बीन में FacesContext इंजेक्शन
- 12. वसंत 3 बीन तत्काल अनुक्रम
- 13. वसंत सुरक्षा- बीन 'org.springframework.security.filterChains बनाने में त्रुटि'
- 14. आईडी, आईडी, या आईडी?
- 15. वसंत बीन नाम अस्वीकार कर रहा है, कोई यूआरएल पथ निर्दिष्ट नहीं है
- 16. कोई कार्यक्षेत्र उदाहरण के साथ कोई अच्छा वसंत धागा?
- 17. अपवाद प्राप्त करना: 'वसंत सुरक्षा सुरक्षितता' नामक कोई बीन
- 18. अद्वितीय बीन्स के साथ वसंत ऑटोवॉयरिंग: वसंत की उम्मीद एकल मिलान बीन लेकिन 2
- 19. सत्र आईडी या उपयोगकर्ता नाम + पासवर्ड
- 20. निजी कन्स्ट्रक्टर के साथ जावा स्प्रिंग बीन
- 21. ककड़ी Capybara आईडी, नाम, या लेबल
- 22. वसंत और वसंत सुरक्षा कॉन्फ़िगरेशन सहायता, एक बीन
- 23. वसंत - बीन निर्माण में अजीब त्रुटि
- 24. हाइबरनेट-एनवर्स रेविजन लिस्टनर वसंत बीन
- 25. आईडी नाम
- 26. स्प्रिंग कॉन्फ़िगरेशन फ़ाइल में बीन आईडी और नाम का उपयोग करने के बीच अंतर
- 27. शीर्षक आईडी या आईडी
- 28. लॉगिन के लिए उपयोगकर्ता नाम या ईमेल आईडी?
- 29. कोई आईडी
- 30. बीन के कन्स्ट्रक्टर
संदर्भ परिभाषा पोस्ट करने पर विचार करें - संदर्भ में परिभाषा को देखे बिना, ठोस जवाब देना मुश्किल है। –
यदि कोई नाम स्पष्ट रूप से प्रदान नहीं किया जाता है, तो कंटेनर उस बीन के लिए एक अद्वितीय नाम उत्पन्न करेगा। – lolotron
डिफॉल्ट रूप से, बीन की आईडी क्लास नाम के ऊंट-आवरण द्वारा उत्पन्न की जाएगी। – lolotron