घोषित करने के लिए कैसे मैं अपने आवेदन Context.xml और मेरे applicationContext-test.xml में दो समान बीन्स का उपयोग कर पाता हूं। मैं अपने परीक्षण संदर्भ को अपने ऐप संदर्भ से प्राप्त करने में सक्षम होना चाहता हूं, खुद को दोहराने से बचने के लिए।अभिभावक अनुप्रयोग संदर्भ
मैंने बहुत सारी सामग्री देखी है जो दर्शाती है कि आप उस संदर्भ से अभिभावक अनुप्रयोग संदर्भ और संदर्भ बीन्स घोषित कर सकते हैं, लेकिन मुझे एक उपयोगी उदाहरण नहीं मिल रहा है। क्या कोई मदद कर सकता है?
अद्यतन कुछ पृष्ठभूमि जानकारी के रूप में, मेरे सामान्य आवेदन संदर्भ web.xml में लोड किया जा रहा है:
<context-param>
<description>Application Contexts for Spring</description>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
मेरा परीक्षण आवेदन संदर्भ मेरी इकाई परीक्षण में लोड किया जाता है:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext-test.xml")
तो मान लीजिए कि मेरे नियमित संदर्भ में एक बीन है:
<bean name="someBean" class="com.foo.MyClass" />
फिर, मेरे परीक्षण अनुप्रयोग संदर्भ में, मैं इस बीन का उल्लेख करना चाहता हूं। मैं यह कैसे करुं?
अद्यतन
प्रति skaffman के सुझाव, मैं एक SharedBeans.xml फ़ाइल में सेम चले गए और मेरी applicationContext.xml में आयात कर लिया। हालांकि, यह एक SAXParser अपवाद का कारण बनता है:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:SharedBeans.xml]
Offending resource: ServletContext resource [/WEB-INF/classes/applicationContext.xml]; nested exception is org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from class path resource [SharedBeans.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'bean'.
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं। बीन मेरी संदर्भ फ़ाइल में ठीक काम कर रहा था, और मैंने जो कुछ किया वह नई फाइल में कट और पेस्ट किया गया था। यहाँ अपनी संपूर्णता में SharedBeans.xml की सामग्री हैं:
<bean name="properties" class="com.foo.Properties">
<constructor-arg><value>${module.name}</value></constructor-arg>
<constructor-arg><value>${businessUnit}</value></constructor-arg>
<constructor-arg><value>${product}</value></constructor-arg>
<constructor-arg><value>${env}</value></constructor-arg>
<constructor-arg><value>${machineName}</value></constructor-arg>
<constructor-arg><value>${collectionSet.company}</value></constructor-arg>
<constructor-arg><value>${route.tag}</value></constructor-arg>
<constructor-arg><value>${timeout}</value></constructor-arg>
</bean>
यह इस बात पर निर्भर करता है कि आपने चीजों को कैसे सेट अप किया है। कृपया अपने संदर्भों का उपयोग करने का एक उदाहरण दें। – skaffman
@skaffman: प्रश्न अपडेट किया गया। उदाहरण की सराहना की। – Samo
आपको अभी भी ' 'शीर्ष-स्तरीय तत्व की आवश्यकता है .... –
skaffman