स्प्रिंग 3.0 बाकी:
स्प्रिंग एनोटेशन आधारित नियंत्रकों, जो नियंत्रक में एक विधि के लिए एक यूआरएल बाध्य करने के लिए इस्तेमाल किया जा सकता का उपयोग करता है। जीईटी विधियों और पोस्ट विधियों के बीच अंतर करने के लिए एनोटेशन का उपयोग किया जाता है।
@RequestMapping(value="/hotels/{hotel}/bookings/{booking}",
method=RequestMethod.GET)
public String getBooking(@PathVariable("hotel") long hotelId,
@PathVariable("booking") long bookingId, Model model) {
Hotel hotel = hotelService.getHotel(hotelId);
Booking booking = hotel.getBooking(bookingId);
model.addAttribute("booking", booking);
return "booking";
}
हुड के तहत, यूआरआई स्ट्रिंग में परिवर्तनीय "होटल" को बुकिंग के रूप में पैरामीटर सूची में एक लंबे समय में परिवर्तित कर दिया जाता है। वसंत आरईएसटी इसी तकनीक का उपयोग कर कस्टम कक्षाओं में मार्शल JSON ऑब्जेक्ट्स भी कर सकता है। ध्यान दें कि इस विधि को RequestMethod.GET
के रूप में एनोटेट किया गया है, जिसका अर्थ है कि इसे जीईटी अनुरोधों के लिए बुलाया गया है लेकिन POST अनुरोध नहीं है।
स्प्रिंग 3.0 आरईएसटी पहियों या मार्शल/अनारशल JSON पाठ को हाथ से/जावा ऑब्जेक्ट्स को हाथ से फिर से शुरू करने की आवश्यकता को समाप्त कर रीस्टफुल वेब सेवाओं को बनाना आसान बनाता है।
REST In Spring MVC शीर्षक वाले स्प्रिंगसोर्स ब्लॉग पर एक डेमो है। सीखने की अवस्था कम है, लेकिन काम करने के लिए डेमो प्राप्त करने पर निर्भरता के लिए कुछ समय लग सकता है। एक बार जब आप सेटअप कर लें और एक कामकाजी डेमो हो, तो सबसे कठिन हिस्सा खत्म होना चाहिए।
आईडीई एकीकरण के लिए, Spring Roo देखें। मैंने इसका उपयोग नहीं किया है, लेकिन मैंने सुना है कि इसमें कुछ विशेषताएं हैं जो आपके जीवन को आसान बनाने के लिए ग्रहण आईडीई के साथ एकीकृत करती हैं।
Restlets:
Restlets केवल बाकी के लिए डिजाइन किए गए थे। नतीजतन, ओवरहेड स्प्रिंग 3.0 से बहुत कम है। रेस्टलेट उन मामलों के लिए बेहतर अनुकूल हैं जहां आपके पास जीयूआई नहीं है, और जहां आप एमवीसी से चिंतित नहीं हैं। Restlets आसानी से एक सर्वर और एक ग्राहक दोनों के रूप में काम कर सकते हैं। इसमें एक एम्बेडेड सर्वर भी है जिसे आप चला सकते हैं, जो जेटी या टॉमकैट जैसे कंटेनर की आवश्यकता को समाप्त करता है।
मुझे पाइथन के लिए बहुत कम जोखिम मिला है, लेकिन मैंने Google App Engine के वेब ऐप फ्रेमवर्क के कार्यान्वयन के बारे में जो देखा है, राउटर अवधारणा बहुत समान महसूस करती है। एक अजगर पृष्ठभूमि के साथ उन सीखने की अवस्था प्राप्त कर सकते हैं एक बहुत कम होने की:
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
getConnectorService().getClientProtocols().add(Protocol.FILE);
// Serve the files generated by the GWT compilation step.
Directory dir = new Directory(getContext(), LocalReference.createFileReference(new File("war/")));
router.attachDefault(dir);
router.attach("/contacts/123", ContactServerResource.class);
return router;
}
यह ग्राहक पक्ष पर GWT उपयोग करता है; मैं उस भाग को बाहर लेना पसंद करता हूं क्योंकि यह मुझे जावा स्विंग का बहुत अधिक याद दिलाता है। जबकि कुछ लोगों को यह फायदेमंद लगता है, मेरी व्यक्तिगत वरीयता उन प्रौद्योगिकियों से चिपकना है जो वेब की तरह अधिक महसूस करते हैं।
नीचे स्टैंडअलोन मोड का उपयोग कर एक आरईएसटी सर्वर का एक सरल उदाहरण है। सर्वर पोर्ट 8182 पर चलता है, और यह जीईटी अनुरोधों के लिए सुनता है। इसमें वसंत आरईएसटी ढांचे के समान समान एनोटेशन-आधारित मॉडल है, जो विभिन्न HTTP विधियों को विभाजित करने में मदद करता है और उन्हें आपकी कक्षाओं में विभिन्न तरीकों से इंगित करता है।
public class FirstServerResource extends ServerResource {
public static void main(String[] args) throws Exception {
// Create the HTTP server and listen on port 8182
new Server(Protocol.HTTP, 8182, FirstServerResource.class).start();
}
@Get
public String toString() {
return "hello, world";
}
}
चेक बाहर अधिक जानकारी और Restlets ढांचे के उदाहरण के लिए Restlet Web Site: यह एक बहुत ही बुनियादी "नमस्ते दुनिया" बाकी उदाहरण है। रेस्टलेट्स में वसंत की तुलना में थोड़ा कम सीखने की वक्र है क्योंकि इसे आरईएसटी के लिए लक्षित किया गया है; नतीजतन, इसमें स्प्रिंग के साथ शामिल सभी अतिरिक्त कार्यक्षमताएं शामिल नहीं होतीं जो कभी-कभी किसी समस्या का उत्तर ढूंढ सकती हैं। यदि आप कुछ हल्के वजन की तलाश में हैं तो रेस्टलेट निश्चित रूप से जाने का तरीका हैं।
इन दोनों ढांचे में से दोनों टॉमकैट, जेट्टी के साथ-साथ Google App Engine पर भी चलेंगे।
जर्सी वास्तव में दिलचस्प लग रहा है, इसमें देखेंगे! धन्यवाद ;-) –
जर्सी की एनोटेशन वास्तव में समृद्ध है, कम से कम वसंत एमवीसी 3.x की तुलना में।आप विधि संसाधन पैरामीटर के माध्यम से इसे पारित करने के बजाय अपने 'संसाधन' वर्ग (मूल रूप से स्प्रिंग एमवीसी के 'नियंत्रक' वर्ग के समतुल्य) में किसी संपत्ति के लिए '@ पथपाराम' लागू कर सकते हैं .. बहुत उपयोगी, खासकर यदि 'संसाधन' कक्षा में सभी एपीआई उस विशेष पथ चर की आवश्यकता है। स्प्रिंग एमवीसी 3.x में, आपको 'नियंत्रक' वर्ग में एक ही प्रभाव प्राप्त करने के लिए 'नियंत्रक' वर्ग में प्रत्येक विधि सेट करना होगा ... या कम से कम, मुझे नहीं पता कि स्प्रिंग एमवीसी 3 में इसे सुंदर तरीके से कैसे किया जाए ।एक्स। – limc