2013-07-05 8 views
20

में एक एनोटेटेड स्प्रिंग घटक का संदर्भ लें, मैं बाहरी पुस्तकालय का उपयोग कर रहा हूं जिसके लिए मुझे एक एक्सएमएल बीन परिभाषा का उपयोग करके कॉन्फ़िगर करना आवश्यक है; बीन परिभाषा में मुझे अपनी परियोजना से बीन के साथ एक बाहरी कक्षा प्रदान करने की आवश्यकता है। मैं घटक स्कैनिंग के साथ वसंत एनोटेशन का उपयोग कर रहा हूँ।एक एक्सएमएल बीन परिभाषा

मैं एक्सएमएल बीन परिभाषा के भीतर अपने एनोटेटेड बीन का संदर्भ कैसे दूं?

क्या एक्सएमएल बीन परिभाषा बनाने के कोई विकल्प हैं?

विवरण: वसंत 3.0.7

उत्तर

31

कोई फर्क नहीं पड़ता कि यह कैसे बना लिया गया है (पर XML- या annotation- मेटाडाटा आधारित), हर सेम का एक अलग नाम के तहत आवेदन के संदर्भ में समाप्त होता है।

तुम सिर्फ, @Component या डेरिवेटिव के साथ अपने वर्ग एनोटेट गया है किसी भी नाम बताते हुए बिना, डिफ़ॉल्ट नामकरण योजना लागू कर दिया जाएगा और सेम नाम पहले अक्षर को लोवरकेस के साथ अपने वर्ग के नाम हो जाएगा: ClassName => "className"

इसे ध्यान में रखते

, यदि आप एक एक्सएमएल सेम परिभाषा है कि सेम इंजेक्षन करने की जरूरत है, आप इसे अपने संदर्भ में किसी अन्य सेम के साथ की तरह कार्य करें:

<bean id="someBean" class="SomeClass"> 
    <property name="someProp" ref="className"/><!-- to stick to the above example --> 
</bean> 

आप XML के साथ एनोटेशन मिश्रण कर रहे हैं, एप्लिकेशन संदर्भ "className" बीन ठीक से पता लगाने में सक्षम हो जाएगा।

6

@ सेवा एनोटेशन एक वैकल्पिक स्ट्रिंग मान लेता है जिसका उपयोग बीन को आपके चयन का नाम देने के लिए किया जा सकता है। उदाहरण के लिए, अपने कस्टम सेम लग रहा है, तो जैसे:

@Service("mySpecialName") 
public class MyClass { ... } 

फिर अपने एक्सएमएल हो सकता है:

<bean class="com.someone.else.library.SomeClass"> 
    <property name="someProp" ref="mySpecialName"/> 
</bean> 
0

मेक सुनिश्चित करें कि आपके xml फ़ाइल में नीचे दिए गए कोड को जोड़ने

<context:component-scan base-package="" /> 
<context:annotation-config /> 
+0

@Mike पहले से ही उन्होंने कहा एनोटेशन बीन का उपयोग कर रहा है। –

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