एक मानक स्प्रिंग वेब एप्लीकेशन (रूओ या "स्प्रिंग एमवीसी प्रोजेक्ट" टेम्पलेट द्वारा बनाया गया) ContextLoaderListenerऔर के साथ एक web.xml बनाते हैं DispatcherServlet। वे DispatcherServletपूर्ण कॉन्फ़िगरेशन को लोड करने के लिए केवल इसका उपयोग क्यों नहीं करते और इसे बनाते हैं?
मैं समझता हूं कि ContextLoaderListener का उपयोग उस सामान को लोड करने के लिए किया जाना चाहिए जो वेब प्रासंगिक नहीं है और DispatcherServlet का उपयोग वेब प्रासंगिक सामग्री (नियंत्रकों, ...) को लोड करने के लिए किया जाता है। और इसका परिणाम दो संदर्भों में होता है: एक अभिभावक और एक बच्चा संदर्भ।
पृष्ठभूमि:
मैं इसे कई वर्षों से इस मानक तरीके से कर रहा था।
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Handles Spring requests -->
<servlet>
<servlet-name>roo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
इससे अक्सर दोनों संदर्भों और उनके बीच निर्भरता के साथ समस्याएं पैदा हुईं। अतीत में मैं हमेशा एक समाधान खोजने में सक्षम था, और मुझे इस बात का पक्का एहसास है कि इससे सॉफ्टवेयर संरचना / वास्तुकला हमेशा बेहतर होती है। लेकिन अब मैं दोनों संदर्भों की घटनाओं के साथ एक समस्या का सामना कर रहा हूं ।
- हालांकि यह मेरे दो संदर्भ पैटर्न को पुनर्विचार करता है, और मैं खुद से पूछ रहा हूं: मुझे अपने आप को इस परेशानी में क्यों लाना चाहिए, क्यों न सभी स्प्रिंग कॉन्फ़िगरेशन फ़ाइलों को एक के साथ लोड किया जाए DispatcherServletऔर ContextLoaderListenerपूरी तरह से हटा दिया जाए। (मेरे पास अभी भी अलग-अलग कॉन्फ़िगरेशन फ़ाइलें होंगी, लेकिन केवल एक संदर्भ।)
वहाँ किसी भी कारण को दूर करने के लिए नहीं है ContextLoaderListener?