2013-02-18 48 views
10

मैं जावा में एक मध्यम आकार के वेब एप्लिकेशन के आर्किटेक्चर को डिजाइन करने की कोशिश कर रहा हूं और मैं इसे कैसे करना है इस बारे में कुछ सलाह लेना चाहता हूं।स्प्रिंग और मेवेन के साथ मॉड्यूलर वेब एप्लिकेशन

परियोजना में मूल वेबसाइट और कई मॉड्यूल शामिल हैं। उदाहरण के लिए, एक मॉड्यूल उपयोगकर्ता पंजीकरण प्रदान करेगा, एक और मॉड्यूल एक वेब सेवा प्रदान करेगा, और इसी तरह ...

जब भी मुझे किसी नए ग्राहक को एप्लिकेशन वितरित करने की आवश्यकता होती है, तो आदर्श बात मॉड्यूल को चुनना होगा वह चाहता है, कुछ थीमिंग (सीएसएस, छवियों, शायद जेएसपी) करें और कस्टम मॉड्यूल विकसित कर सकते हैं, यदि कोई हो, तो उसे चाहिए।

मैंने मैवेन मल्टी मॉड्यूल प्रोजेक्ट्स, युद्ध ओवरले के लिए एक नज़र डाली है, लेकिन मुझे विशेष रूप से मॉड्यूल की कॉन्फ़िगरेशन के संबंध में एप्लिकेशन को विभाजित करना मुश्किल लगता है (उदाहरण के लिए, मॉड्यूल से वैश्विक वसंत कॉन्फ़िगरेशन विलय करना) । क्या कोई मुझे इस तरह के सिस्टम के उदाहरण के लिए इंगित कर सकता है? अग्रिम में धन्यवाद!

उत्तर

6

विलय वसंत विन्यास आसान है। प्रत्येक मॉड्यूल में, इसकी/WEB-INF/कक्षा निर्देशिका में एक वसंत संदर्भ फ़ाइल को पैकेज करें। जब आप ओवरले करते हैं, तो निर्भरता में वेब-आईएनएफ कक्षाओं में सभी वर्गों और संसाधनों को आपके ऐप में वेब-आईएनएफ/कक्षाओं में रखा जाएगा। (पीएस, यह भी काम करता है अगर आप इसके बजाय .jar के रूप में पैकेज करते हैं, लेकिन यदि आप करते हैं तो आप .jsp फ़ाइलों को ओवरले नहीं कर पाएंगे)

फिर यह उन्हें आयात करने की बात है। यह फ़ाइलों को खोजने के लिए एक सेट पैटर्न का उपयोग कर सबसे अच्छा किया जाता है। यहां एक उदाहरण दिया गया है:

<import resource="classpath*:/module/*-context.xml" /> 

यह इस पैटर्न से मेल खाने वाले सभी क्लासपाथ संसाधनों को आयात करेगा।

एनोटेशन आधारित उदाहरण:

@Configuration 
@ImportResource(value={"classpath*:/module/*-context.xml"}) 
public class MyConfiguration { ... } 

यह web.xml विन्यास अगर आप मॉड्यूल में किसी भी web.xml अनुकूलन करने के लिए की जरूरत है कि आप कुछ भी की तुलना में अधिक परेशानी का कारण होगा है। आप निश्चित रूप से सर्वलेट 3.0 का उपयोग कर सकते हैं, लेकिन इसके लिए सही सर्वर पर तैनाती की आवश्यकता है।

+1

धन्यवाद - आयात के साथ पहली समस्या सेम नाम आप समान नाम वाले दो संदर्भों में सिंगलटन, और कई अन्य परेशानियों .. नहीं हो सकता टीबीसी https://github.com/griddynamics/banshun

संघर्ष है! जब भी संभव हो, मैं यहां मॉड्यूल में "खंड" विन्यास फाइलों को इंगित करता हूं। मुझे लगता है कि मैं एक वेब.एक्सएमएल के साथ रह सकता हूं। तो अब मैं इसे आज़माकर देख रहा हूं और देख सकता हूं कि अन्य प्रौद्योगिकियों के विन्यास (हाइबरनेट, टाइल्स आदि) के साथ क्या किया जा सकता है। मैं इसे अपडेट करूंगा। – user683887

+1

हाइबरनेट उनके मॉडल भी खंडित हो सकते हैं। हाइबरनेट सत्र कारखानों के लिए वसंत कारखाने के बीन्स में क्लासपाथ स्कैनिंग भी है (या तो .hbm.xml या पैकेज आधारित स्कैनिंग) – Matt

1

fwiw, सादे वसंत आयात के साथ कुछ अनुभव के बाद हमने वसंत के लिए ओजीआई-कम मॉड्यूलरिटी के लिए छोटे ढांचे का विकास किया। माइक की मदद करने के लिए