दिलचस्प पोस्ट
पेपरक्लिप संलग्नक उत्पन्न करने के लिए मैं फ़ैक्टरी लड़की का उपयोग कैसे करूं? JQuery के अजाक्स अनुरोध प्रत्येक एक्स मिनट पर कॉल करें Codeigniter: देखने के नियंत्रक से डेटा पासिंग वसंत MVC @ResponseBody विधि में स्ट्रिंग लौटने में HTTP 400 त्रुटि के साथ कैसे प्रतिक्रिया दें? विंडोज और आईएएनए समय क्षेत्रों के बीच अनुवाद कैसे करें? समयबद्धता के साथ पूरा करने के लिए कार्य <T> के लिए असिंक्रोनस रूप से प्रतीक्षा करें जावास्क्रिप्ट का उपयोग कर एक HTML तत्व को कैसे निकालना है? Angularjs के बारे में उलझन में अंतर और अलग-अलग स्कोप और बाइंडिंग गतिशील रूप से कई कॉलम देखने के लिए कॉल का निर्माण करें जावा ईई 6 @ javax.annotation.ManagedBean बनाम @ javax.inject.Named बनाम @ javax.faces.ManagedBean सबमिट बटन को दबाए जाने के लिए "एंटर" कुंजी की अनुमति दें, चूंकि केवल MouseClick का उपयोग करने के विपरीत हाइबरनेट आईडी जेनरेटर कैसे कॉम्बो बॉक्स चयन के आधार पर UI को बदलने के लिए सिगविन के अंतर्गत जीसीसी के उपयोग से निष्पादन योग्य फ़ाइल उत्पन्न होती है Multithreading सॉकेट संचार क्लाइंट / सर्वर

संयोजन स्प्रिंग प्रोजेक्ट और जर्सी

मैंने स्प्रिंग जेपीए के साथ एक परियोजना बनाई है, और अब मैं इसे अपने जर्सी प्रोजेक्ट में इस्तेमाल करना चाहता हूं। मैंने अपने एसजेपीए प्रोजेक्ट को मेरे पॉम.एक्सएमएल में निर्भरता के रूप में जोड़ा है

जब मैं GET / POST / PUT / DELETE विधियों का उपयोग करता हूं तो मैं अपने एसजेपीए से अपनी सेवा कक्षाओं का उपयोग करना चाहूंगा क्या एनोटेशन के साथ ऐसा करने का एक आसान तरीका है? या क्या मुझे हर वर्ग में AnnotationConfigApplicationContext प्राप्त करना है? कचरे की तरह लगता है

 @Path("/users") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public final class UserResource { private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); private PodcastService service; @GET public Response getAllPodcasts() { context.scan("org.villy.spring.service"); context.refresh(); service= context.getBean(PodcastService.class); return Response.ok(service.findAll()).build(); } } 

Solutions Collecting From Web of "संयोजन स्प्रिंग प्रोजेक्ट और जर्सी"

नोट: नीचे दिए गए लिंक्ड उदाहरण परियोजनाएं जर्सी मास्टर शाखा से हैं, जो वर्तमान में जर्सी 3 का एक स्नैपशॉट है, जो अभी तक जारी नहीं की गई है। जर्सी 3 स्प्रिंग 4 का इस्तेमाल करेगा, इसलिए आप jersey-spring4 वसंत 4 पर निर्भरता देख सकते हैं। यह निर्भरता अभी तक अस्तित्व में नहीं है, क्योंकि जर्सी 3 अभी तक जारी नहीं हुई है (संभवतः थोड़ी देर के लिए नहीं)। तो उपयोग करने की निर्भरता jersey-spring3 सभी उदाहरणों को अभी भी एक ही काम करना चाहिए, बस एक निर्भरता को बदलना यदि आप स्प्रिंग 4 का उपयोग करना चाहते हैं, तो इस जवाब में नीचे दिए गए पॉम में सूचीबद्ध निर्भरताएं देखें


आपको सेवा की आवश्यकता है, जहां ApplicationContext बनाने की आवश्यकता नहीं है। आप एक वैश्विक एक को कॉन्फ़िगर करने में सक्षम होना चाहिए जर्सी में इसके लिए एक मॉड्यूल है जो दो ढांचे को एकीकृत करता है। इससे आपको अपने जर्सी संसाधन कक्षाओं में अपने सभी स्प्रिंग सेवाओं को @Autowired करने की सुविधा @Autowired

किसी भी उदाहरण का निर्माण करने की कोशिश करने के बजाय, मैं सिर्फ आधिकारिक उदाहरणों से लिंक करूँगा। वे सीधे परियोजनाओं से हैं, इसलिए लिंक कुछ समय के लिए अच्छा होना चाहिए। मेवेन निर्भरताओं के विशेष नहीं ले लो। उदाहरण के लिए काम करने के लिए उन्हें सुनिश्चित करने की आवश्यकता होगी

  • स्प्रिंग एक्सएमएल कॉन्फ़िग के साथ जर्सी 2.x
  • स्प्रिंग जावा कॉन्फ़िग के साथ जर्सी 2.x [ 1 ]
  • स्प्रिंग एक्सएमएल कॉन्फ़िग के साथ जर्सी 1.x
  • स्प्रिंग बूट के साथ जर्सी 2.x

नोट: उदाहरण में ${spring3.version} संस्करण 3.2.3 है। RELEASE उदाहरण के साथ स्प्रिंग 4 का उपयोग करना संभव है, लेकिन आपको jersey-spring3 वसंत 3 निर्भरता से सभी स्प्रिंग संक्रमणशील निर्भरताओं को बाहर करना सुनिश्चित करना होगा।

[ 1 ] – जावा कॉन्फ़िग उदाहरण के बारे में एक बात यह है कि यह एक स्टैंडअलोन ऐप का उपयोग करता है वेबपैकेज में जावा कॉन्फिग का उपयोग करने के लिए कुछ छल की आवश्यकता है यह एक ज्ञात बग है जहां जर्सी एक परम contextConfigLocation लिए दिखता है contextConfigLocation स्थान को applicationContext.xml फ़ाइल के स्थान के साथ contextConfigLocation और एक अपवाद फेंक देगा जब उसे एक नहीं मिलेगा।

मैंने इसके चारों ओर कुछ तरीके पाये हैं।

  1. इसका एक उदाहरण उस व्यक्ति द्वारा उल्लिखित किया गया, जिसने इस मुद्दे को उठाया। आप स्प्रिंग वेब प्रारंभकर्ता बना सकते हैं जहां आप वसंत संदर्भ को कॉन्फ़िगर करते हैं और परम संपत्ति को ओवरराइड करते हैं। ( यहां पूर्ण उदाहरण देखें)।

     @Order(1) public class SpringWebContainerInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { registerContextLoaderListener(servletContext); // Set the Jersey used property to it won't load a ContextLoaderListener servletContext.setInitParameter("contextConfigLocation", ""); } private void registerContextLoaderListener(ServletContext servletContext) { WebApplicationContext webContext; webContext = createWebAplicationContext(SpringAnnotationConfig.class); servletContext.addListener(new ContextLoaderListener(webContext)); } public WebApplicationContext createWebAplicationContext(Class... configClasses) { AnnotationConfigWebApplicationContext context; context = new AnnotationConfigWebApplicationContext(); context.register(configClasses); return context; } } 
  2. आप बस classpath में applicationContext.xml जोड़ सकते हैं और सिर्फ एक बीन के रूप में स्प्रिंग जावा कॉन्फ़िगरेशन क्लास को पंजीकृत कर सकते हैं

     <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> <bean id="config" class="com.your.pkg.SpringAnnotationConfig"/> </beans> 
  3. मैं सोच सकता हूं कि एक और तरीका है, लेकिन मैंने इसे बचाया है, मैं वास्तव में इसका परीक्षण कर सकता हूं।


अद्यतन करें

"उम्मीदवार घटक वर्ग को पढ़ने में असफल … एएसएम कक्षाप्रदर्शक क्लास फ़ाइल को पार्स करने में असफल रहा – शायद एक नया जावा क्लास फ़ाइल संस्करण जो अब तक समर्थित नहीं है"

ऐसा लगता है कि स्प्रिंग 3 का उपयोग जावा 8 के साथ किया जा रहा है। जैसा मैंने कहा था, अगर आप स्प्रिंग 4 का उपयोग करना चाहते हैं, तो आपको jersey-spring3 वसंत 3 से स्प्रिंग संक्रमणशील निर्भरताओं को बाहर करने की आवश्यकता होगी और बस अपनी स्पष्ट रूप से घोषित स्प्रिंग jersey-spring3 के संस्करण को बदलना होगा। । यहां एक उदाहरण है, जिसे मैंने परीक्षण किया और काम किया।

 <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-spring3</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.0.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.1.0.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.1</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.1</version> </dependency>