2013-10-01 7 views
7

मेरे पास वसंत वेब आधारित एप्लिकेशन काम कर रहा है। अब मैं अपने हिस्सों को किसी अन्य प्रोजेक्ट के लिए भी पुन: उपयोग करना चाहता हूं। इसलिए मेरे पास दो प्रश्न हैं:पुन: उपयोग के लिए वसंत आधारित पुस्तकालय पैकेज कैसे करें?

  1. पुन: प्रयोज्य लाइब्रेरी जैसी कार्यक्षमता को पैक करने का अनुशंसित तरीका क्या है? आवेदन संदर्भ एक्सएमएल के अंदर या जेएआर + अतिरिक्त एक्सएमएल के साथ जेएआर फ़ाइल? कुछ और?
  2. ऐसी लाइब्रेरी को अन्य स्प्रिंग (वेब-) आधारित प्रोजेक्ट (अलग-अलग नेमस्पेस - पैकेज) में कैसे शामिल करें ताकि उदा। @Autowired काम करेगा? मुझे लगता है कि क्लासपाथ पर सरल जार पर्याप्त नहीं है - lib के अनुप्रयोग संदर्भ आदि का संदर्भ कैसे लें? अन्य कदमों की क्या आवश्यकता है?

उत्तर

1

आपको किसी प्रकार की पैकेजिंग का उपयोग करना चाहिए जो यह बताएगा कि यह किस पर निर्भर करता है। एक लोकप्रिय विकल्प Maven पैकेजिंग का उपयोग करना है, जो pom.xml फ़ाइलों को प्रदान करता है जो निर्भरताओं की व्याख्या करते हैं। जब आप इसके साथ काम करेंगे तो आप ऐप की ऐवेन रिलीज करेंगे।

इसे उपयोग में लेते समय, आपको अपने ऐप्स स्प्रिंग कॉन्फ़िगरेशन में अपने साझा कॉन्फ़िगरेशन टेम्पलेट को संदर्भित करने की आवश्यकता होगी। आप इसे सीधे आयात कर सकते हैं:

<import resource="classpath*:/META-INF/path/to/otherAppContext.xml" /> 

यह माना जाता है कि आप वास्तव में अपने वसंत संदर्भ कॉन्फ़िगरेशन को साझा करना चाहते हैं। यदि आप पुन: प्रयोज्य वर्ग (केवल) प्रदान कर रहे हैं, तो आमतौर पर संदर्भ कॉन्फ़िगरेशन साझा करने की आवश्यकता नहीं होती है।

+0

तो आप इस तरह से अपने कोड की सिफारिश करते हैं कि यह वसंत से "स्वतंत्र" है? लेकिन आप DI का उपयोग क्यों नहीं करना चाहते हैं? आप कक्षाओं के बीच निर्भरताओं को कैसे संभालेंगे? – sodik

4

मैं जिस दृष्टिकोण का उपयोग करता हूं वह यह सुनिश्चित करने के लिए है कि एप्लिकेशन संदर्भ खंड लाइब्रेरी जार फ़ाइल के भीतर एक प्रसिद्ध स्थान पर रहते हैं (व्यक्तिगत रूप से मैं META-INF/spring का उपयोग करता हूं)। तो मैं कुछ सामान्य सुरक्षा विन्यास और META-INF/spring/common-security-context.xml

नामित अपने ग्राहक आवेदन में एक फ़ाइल में सेम हो सकता है (एक पुस्तकालय का उपयोग करके) आप सभी अपने साझा पुस्तकालयों से सेवाओं और सेम शामिल कर सकते हैं की तरह एक आयात होने से आपके आवेदन-संदर्भ के अंदर एक के बाद:

<import resource="classpath*:META-INF/spring/*-context.xml" /> 

(कक्षा के बाद तारांकन को नोट करें)। यह उन फ़ाइलों का पता लगाएगा जिनके नाम META-INF/spring/*-context.xml पैटर्न किसी भी जार फ़ाइल या क्लासपाथ रूट से चल रहे एप्लिकेशन से दिखाई देते हैं, और उन्हें एक लॉजिकल संदर्भ में एकत्रित करते हैं। जैसा कि आप फिट देखते हैं वाइल्डकार्ड समायोजित करें।

जाहिर है कि यदि आप इसे व्यापक रूप से उपयोग करना शुरू करते हैं तो आपको बीन/सेवा नाम टकराव से बचने के लिए कुछ रणनीति की आवश्यकता होगी।

+0

धन्यवाद, मूल रूप से आप दोनों JAR के अंदर पैक संदर्भ एक्सएमएल की सलाह देते हैं और फिर इसे आयात करते हैं ... टिप – sodik

+0

@sodik के लिए धन्यवाद, हम दोनों आवश्यकतानुसार ऐसा करने के लिए एक ही तरीका प्रदान करते हैं। हालांकि, जैसा कि मैंने कहा, आम तौर पर एक्सएमएल कॉन्फ़िगरेशन को साझा करने की कोई ज़रूरत नहीं है, केवल वे वर्ग जिन्हें वे खुद को बेचते हैं। – eis

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