2012-01-19 14 views
11

मैं वसंत के लिए नया हूं और एक ऐसी स्थिति मिली है जिसमें एक वेब मॉड्यूल सहित कई मॉड्यूल वाले एकल प्रोजेक्ट हैं। वेब मॉड्यूल स्प्रिंग एमवीसी का उपयोग करता है, लेकिन मैं सोच रहा था कि क्या मेरे पास परियोजना स्तर पर मुख्य स्प्रिंग कॉन्फ़िगरेशन हो सकता है जो पूरे प्रोजेक्ट का ख्याल रखता है, ताकि मैं स्प्रिंग फ्रेमवर्क के पूर्ण फायदे ले सकूं।मल्टी-मॉड्यूल प्रोजेक्ट में स्प्रिंग कॉन्फ़िगरेशन

main 
    -module1 
    -module2 
    -web 
     +spring3.1, spring-security 

इस मामले के लिए सबसे अच्छी सेटिंग क्या होगी?

उत्तर

6

बिल्ड लेआउट और रनटाइम क्लासस्पैट दो अलग-अलग चीजें हैं। भले ही आप अलग-अलग मॉड्यूल में applicationContext.xml फाइलें या @Configuration कक्षाओं को परिभाषित करते हैं, फिर भी एक क्लासस्पैट में विलय हो सकता है।

कहा जा रहा है कि module1 और module2 अपने स्वयं के संदर्भ घोषित कर सकते हैं, लेकिन चूंकि क्लासस्पैट रनटाइम पर विलय हो गया है, केवल एक मुख्य संदर्भ बनाया जाएगा। इसके अलावा यदि आप एक मॉड्यूल में क्लासस्पैट स्कैनिंग का उपयोग करना चुनते हैं, तो यह अन्य मॉड्यूल में @Service के साथ एनोटेटेड कक्षाएं (सेम) उठा सकता है।

web मॉड्यूल में, जो स्प्रिंग कोर पुस्तकालयों पर निर्भरता भी होनी चाहिए, spring-web, एमवीसी और spring-security पर भी निर्भर करेगा। यह मॉड्यूल बच्चे web संदर्भ बनाएगा, जिसके पास मुख्य संदर्भ तक पहुंच है लेकिन दूसरी तरफ नहीं।

जाहिर है आप अपने uber-जार (ear?)

8

हम जहाँ मैं काम वास्तुकला के इस प्रकार है में केवल एक पुस्तकालय की एक कॉपी होनी चाहिए। हमने वेब मॉड्यूल में ContextLoaderListener (स्प्रिंग इवेंट श्रोता) का उपयोग करने का निर्णय लिया।

फिर, serverApplicationContext.xml में, हम सभी मॉड्यूल संदर्भ फ़ाइलें आयात:

<import resource="classpath*:module1ApplicationContext.xml" /> 
<import resource="classpath*:module2ApplicationContext.xml" /> 
... 

इस प्रकार आप का लाभ उठाने के वेब अनुप्रयोग संदर्भ आरंभीकरण के दौरान वसंत संदर्भ लोड हो रहा है।

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