2016-03-04 29 views
10

धागे के नाम से निर्देशित के रूप में, मैं वसंत बूट का उपयोग करके एक जावा पुस्तकालय बनाना चाहता हूं। मुझे यह धागा मिला है: Creating a library jar using Spring boot। हालांकि, उस धागे के उद्देश्यों को इसे एक आरईएसटी एपीआई के रूप में कार्यान्वित करके हल किया जाना प्रतीत होता है।क्या हम स्प्रिंग बूट का उपयोग करके जावा लाइब्रेरी को कार्यान्वित कर सकते हैं?

वर्तमान में, मैं स्प्रिंग बूट का उपयोग कर स्प्रिंग आधारित जावा पुस्तकालय विकसित कर रहा हूं। और, मैंने एक जार फ़ाइल के रूप में पैकेज करने की कोशिश की है और जावा जावा लाइब्रेरी की अवधि में इसका उपयोग करने के लिए एक और जावा एप्लिकेशन को जाने दिया है। दुर्भाग्यवश, मैंने पाया कि जब कॉलर एप्लिकेशन अतिरिक्त लाइब्रेरी के कुछ तरीकों का आह्वान करता है, लाइब्रेरी के अंदर परिभाषित कॉन्फ़िगरेशन सभी पर काम नहीं करते हैं। यह भी एक त्रुटि दिखाता है जैसे "कमांडलाइनरनर मौजूद नहीं है"।

अधिक जानकारी के लिए, pom.xml फ़ाइल का एक स्निपेट नीचे दिखाया गया है। कॉन्फ़िगरेशन के अनुसार, मैं वेब अनुप्रयोगों के लिए निर्भरता शामिल नहीं करता हूं।

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.3.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.assertj</groupId> 
     <artifactId>assertj-core</artifactId> 
     <version>2.3.0</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

उत्तर

10

जब सही तरह से डिजाइन इस सब पर एक समस्या नहीं होनी चाहिए। लेकिन विस्तार से यह निर्भर करता है कि आप किस विशेषताओं का उपयोग कर रहे हैं। चूंकि स्प्रिंग जेपीए, वेबस्केट, जैसे बाहरी पुस्तकालय का समर्थन करता है ..

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

पहला वाला बस @Configuration है और दूसरा @Import है।

लाइब्रेरी प्रोजेक्ट

जड़ पैकेज है जो कुछ इस तरह दिखता में एक वर्ग रखो।

@Configuration // allows to import this class 
@ComponentScan // Scan for beans and other configuration classes 
public class SomeLibrary { 
    // no main needed here 
} 

अन्य परियोजना पुस्तकालय

का उपयोग कर के रूप में आम तौर पर अपनी परियोजना की जड़ पैकेज में एक वर्ग डाल दिया।

@SpringBootApplication 
@Import(SomeLibrary.class) // import the library 
public class OtherApplication { 
    // just put your standard main in this class 
} 

यह ध्यान रखना महत्वपूर्ण है कि अन्य ढांचे के संदर्भ में आपके उपयोग के आधार पर अन्य चीजें आवश्यक हो सकती हैं। उदाहरण के लिए यदि आप वसंत-डेटा@EntityScan एनोटेशन का उपयोग करते हुए हाइबरनेट स्कैन बढ़ाता है।

+0

आपकी स्पष्ट व्याख्या के लिए बहुत बहुत धन्यवाद। तो, आपके सुझाव के अनुसार, ** अन्य परियोजना ** ** ** वसंत-आधारित आवेदन ** होना आवश्यक है? साथ ही, यदि संभव हो, तो क्या आप अपना उदाहरण सही कर सकते हैं क्योंकि उन दो वर्गों का एक ही नाम है? – xlives

+0

सही खेद एक कॉपी पेस्ट विफलता थी। यदि आप वाना ऐसा करते हैं तो यह आवश्यक है कि "अन्य" एप्लिकेशन वसंत ऐप भी हो। किसी प्रकार की स्वयं containt लाइब्रेरी बनाना संभव है, लेकिन स्टैक ओवरफ्लो पोस्ट में यह अधिक जटिल और समझाना मुश्किल है। (मैं इस दृष्टिकोण से बचूंगा) –

+0

धन्यवाद। शायद, मैं आपको बाद में ईमेल जैसे अन्य चैनलों के माध्यम से समाधान पूछ सकता हूं। मान लें कि मैं लाइब्रेरी प्रोजेक्ट और अन्य प्रोजेक्ट को स्प्रिंग बूट एप्लिकेशन के रूप में बनाने के साथ जाऊंगा। फिर, मैं ** अन्य प्रोजेक्ट ** में लाइब्रेरी जार कैसे जोड़ सकता हूं? – xlives

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

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