2013-09-03 4 views
7

के लिए ईटैग समर्थन मैं अपने रीस्टफुल स्प्रिंग एप्लिकेशन के लिए ईटाग का समर्थन करने की योजना बना रहा हूं। मेरे द्वारा खुलासा किए जाने वाले अधिकांश संसाधन डीबी में संस्करणित हैं।स्प्रिंग में संस्करणित इकाई

मुझे ShallowEtagHeaderFilter के बारे में पता है, जो बिल्कुल नहीं है, मुझे इसकी आवश्यकता है, क्योंकि यह केवल बैंडविड्थ बचाता है।

क्या स्प्रिंग एमवीसी के लिए एक उत्पादन तैयार समाधान है जो ईटीएजी हेडर को उजागर इकाई संस्करण के साथ जोड़ता है?

+4

मुझे एक अच्छा लेख http://www.infoq.com/articles/etags मिला, जो मुझे चाहिए जो कि समान है, लेकिन अभी भी कुछ काम करने की आवश्यकता है। – mavarazy

+1

हाय मावराज़ी आपने https://github.com/patrickvankann/spring-conditional-response देखा है? –

+0

नहीं, मैंने लिंक के लिए धन्यवाद नहीं किया है – mavarazy

उत्तर

6

वसंत-डेटा-आराम इस आउट ऑफ़ द बॉक्स का समर्थन करता है, the conditional request part of the reference documentation देखें। see reference documentation -

तुम भी स्प्रिंग फ्रेमवर्क 4.2.0+ जो नियंत्रक तरीकों से लौटे ResponseEntity प्रकार के लिए सशर्त अनुरोध का समर्थन करता है का उपयोग कर सकते हैं।

कुछ की तरह:

@RequestMapping("/book/{id}") 
public ResponseEntity<Book> showBook(@PathVariable Long id) { 

    Book book = findBook(id); 
    String version = book.getVersion(); 

    return ResponseEntity 
       .ok() 
       .cacheControl(CacheControl.maxAge(30, TimeUnit.DAYS)) 
       .eTag(version) // lastModified is also available 
       .body(book); 
} 
0

आप कस्टम eTags जो आपके मामले में संस्करण संख्या होगी जांच करने के लिए ServletWebRequest.checkNotModified कॉल उपयोग कर सकते हैं। दोबारा, यह तभी काम करेगा जब आपकी सामग्री में बदलाव संस्करण संख्या में बदलाव की गारंटी देता है।

अधिक जानकारी here

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