REST वेब सेवाओं के लिए स्प्रिंग 4 बनाम जर्सी


117

हम वसंत 4.0.6 संस्करण के साथ एक नया अनुप्रयोग बनाने की योजना बना रहे हैं। हम नियंत्रक का उपयोग करते हैं जो "XML" या "JSON" वापस कर सकते हैं। पिछली परियोजना में हमने JAX-RS API का उपयोग करके REST के समर्थन के लिए स्प्रिंग के साथ जर्सी को सफलतापूर्वक लागू किया है, लेकिन वरिष्ठों के कुछ लेखों और सुझावों को पढ़ने के बाद उन्होंने कहा कि वसंत बहुत अच्छा REST समर्थन प्रदान कर रहा है।

अगर मैं JAX-RS और जर्सी का उपयोग किए बिना स्प्रिंग रेस्ट सपोर्ट का उपयोग करता हूं तो कुछ बिंदु जो वास्तव में मुझे भ्रमित करते हैं:

  1. स्प्रिंग एमवीसी में मार्शलिंग और अनमैर्शिंग कैसे किया जाता है?

  2. क्या जर्क-आरएस का उपयोग करने के लिए मार्शलिंग या अनमरशलिंग की आवश्यकता है।

  3. यदि मार्शलिंग और अनमैर्शिंग स्वचालित रूप से वसंत द्वारा नियंत्रित किए जाते हैं तो यह xmlRootElements के बारे में कैसे जानता है।

मैं अभी भी उलझन में हूं कि अगर वसंत REST का बहुत अच्छा समर्थन साबित होता है तो लोग अभी भी जर्सी के साथ REST के लिए क्यों जाते हैं? वास्तव में अधिक जानकारी के लिए देख रहे हैं।

अगर मैंने कुछ गलत कहा है तो कृपया इसे अनदेखा करें। उदाहरण के साथ स्पष्टीकरण वास्तव में सहायक है।

अग्रिम में धन्यवाद!!

जवाबों:


119

मैं कहता हूं कि जर्सी और स्प्रिंग एमवीसी दोनों महान हैं - प्रत्येक परियोजना की अपनी शैली और ताकत है। वैसे भी, व्यक्तिपरक तुलना करने के लिए स्टैक ओवरफ्लो सही जगह नहीं है (आपका प्रश्न काफी जल्दी बंद हो जाएगा)। यदि आप पहले से ही स्प्रिंग को अन्य सभी चीज़ों के लिए उपयोग कर रहे हैं और JAX-RS का उपयोग करने की आवश्यकता नहीं है , तो स्प्रिंग MVC कुल अर्थ बनाता है।

(संयुक्त राष्ट्र) मार्शलिंग जैसी सुविधाओं के बारे में, JAX-RS सभी के बाद सिर्फ एक युक्ति है - अन्य पुस्तकालय समान एपीआई को लागू किए बिना समान सुविधाओं की पेशकश कर सकते हैं।

  1. MessageBodyReaders / Writers के बजाय , स्प्रिंग MVC HESTpMessageConverters का उपयोग (un) REST संसाधनों को संभालने के लिए कर रहा है । स्प्रिंग एमवीसी सामग्री बातचीत को संभालता है और नौकरी के लिए सबसे अच्छा उपलब्ध कन्वर्टर चुनता है (आप मीडिया के प्रकारों का संकेत करने के लिए तरीके बता सकते हैं कि वे किस प्रकार का उत्पादन / उपभोग करते हैं)।

  2. नहीं, JAX-RS का उपयोग (अन) मार्शल संसाधनों के लिए करना आवश्यक नहीं है। वास्तव में, JAX-RS कार्यान्वयन और स्प्रिंग MVC काम करने के लिए तीसरे पक्ष के क्रमांकन पुस्तकालयों का उपयोग करते हैं; इसलिए यह एक विशेष मानक से बंधा नहीं है।

  3. अपने 4.0.6 संस्करण में, स्प्रिंग कई HttpMessageConverters का समर्थन करता है , जैक्सन के लिए जैक्सन, XML के लिए JAXB और कई अन्य लोगों के साथ। स्प्रिंग 4.1.0 ने अधिक HttpMessageConverters जोड़ा :

अपने अंतिम बिंदु का उत्तर देने के लिए, @XmlRootElementएक JAXB एनोटेशन है और JAX-RS का हिस्सा नहीं है। स्प्रिंग JAXB का समर्थन करता है

स्प्रिंग में REST के साथ एक और पूर्ण उदाहरण के लिए, इस गाइड को शुरू करना देखें (आपको 10-15 मिनट में पूरा उदाहरण मिल जाएगा)।

फिर से आपके प्रश्न का अंतिम भाग काफी व्यक्तिपरक है - JVM में REST सेवाओं के निर्माण के लिए कई लोकप्रिय समाधान हैं, न कि केवल जर्सी और स्प्रिंग (ड्रॉपविद, प्ले! फ्रेमवर्क, आदि)।


2
आप किसी को इस तरह का प्रश्न पूछने का सुझाव कहाँ देंगे?
swade

8
"आपका प्रश्न काफी जल्दी बंद हो जाएगा"! नहीं है कि जल्दी :)
Afshin Moazami

6
मेरे पास स्टैकओवरफ्लो और आई लव क्वारा है, मुझे यह क्लोजिंग सब्जेक्टिव क्वेश्चन पॉलिसी पसंद नहीं आई है और मैंने कभी भी क्वोरा में तकनीकी सवाल पूछने के बारे में नहीं सोचा है
कल्पेश सोनी

एक स्पर्धात्मक प्रश्न, क्या हम एक ही EAR में जर्सी और स्प्रिंगरेस्ट दोनों को अलग-अलग सेवाओं के लिए एक साथ चला सकते हैं?
प्रमोदकोवा

22

AFAIK स्प्रिंग रेस्ट सपोर्ट स्प्रिंग MVC पर आधारित है और इसके JAX-RS कार्यान्वयन के लिए नहीं है जबकि जर्सी ने JAX-RS विनिर्देश लागू किया है। अपनी परियोजना में स्प्रिंग (कोर, एओपी या एमवीसी) रखने वाले लोग JAX-RS कार्यान्वयनकर्ता पर स्प्रिंग रेस्ट समर्थन चुनते हैं।

मैं जर्सी को इसके परिपक्व होने की सलाह देता हूं, JAX-RS को लागू करता है और इसका उपयोग करना आसान है।


1
उत्तर के लिए धन्यवाद, कैसे jax-rs का उपयोग किए बिना वसंत में किया जाने वाला मार्शलिंग और अनमर्सलिंग।
रोबिन सक्सेना

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

2
जर्सी एक अच्छा विकल्प है यदि आप उपयोग करते हैं (या आप उपयोग करना चाहते हैं) स्प्रिंग बूट। cf प्रलेखन
हेरो जूल

1
आप Google GSON लाइब्रेरी का उपयोग मार्शलिंग और अनमर्शलिंग के लिए कर सकते हैं । यह जावा जेनरिक और कस्टम ऑब्जेक्ट का समर्थन करता है।
तेज्जरतुल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.