जैसा कि आप सभी जानते हैं, स्प्रिंग बूट न्यूनतम कॉन्फ़िगरेशन और राय वाले सेटअप के साथ वेबएप या स्टैंडअलोनऐप विकसित करने का एक शानदार तरीका है।
इस तरह मैंने स्प्रिंग बूट एप्लिकेशन में वेब फ़िल्टर डेवलपमेंट हासिल किया है
माई स्प्रिंगबूटऐप विनिर्देशों: -
स्प्रिंग बूट संस्करण: 2.0.4। कृपया
जावा संस्करण: 8.0
सर्वलेट विशिष्टता: सर्वलेट 3.0 (अनिवार्य और महत्वपूर्ण)
मैंने सर्वलेट विनिर्देशों 3.0 का पालन करते हुए, निम्नलिखित तरीके से अपना वेब फ़िल्टर घोषित किया
यह Web.xml आधारित परिभाषाओं के प्रतिस्थापन के रूप में फ़िल्टर को परिभाषित करने का प्रोग्रामेटिक तरीका है।
"@Webfilter" एनोटेशन को तैनाती के दौरान कंटेनर द्वारा संसाधित किया जाएगा, फ़िल्टर वर्ग जिसमें यह पाया जाता है कॉन्फ़िगरेशन के अनुसार बनाया जाएगा और URL पैटर्न, javax.servlet.Servlets और javax.servlet.DispatcherTypes पर लागू किया जाएगा।
पूरी तरह से Web.xml से बचने के लिए और "भरोसेमंद" WebApp प्राप्त करने के लिए: -
स्प्रिंग बूट एप्लिकेशन को "पारंपरिक युद्ध" के रूप में तैनात करने के लिए, आवेदन वर्ग को स्प्रिंगबूटस्लेटलेट इंसुलेटर का विस्तार करना चाहिए।
ध्यान दें::
SpringBootServletInitializer Servlet 3.0+ विनिर्देशों के संदर्भ में web.xml का एक "प्रोग्रामेटिक कार्यान्वयन" है, जिसे WebApplicationInitializer के कार्यान्वयन की आवश्यकता होती है।
इस प्रकार,
SpringBootApplication को इसके अनुप्रयोग वर्ग के रूप में "web.xml" की आवश्यकता नहीं है (स्प्रिंगबूटस्लेटलेट इंसुलेटर के बाद) - @WebFilter के लिए स्कैन ,
- @WebListener और
- @WebServlet के ।
एनोटेशन @ServletComponentScan
यह एनोटेशन @WebFilter, @WebListener और @Webbervlet के साथ एनोटेट किए गए वेब घटकों के लिए आधार पैकेज को स्कैन करने में सक्षम बनाता है।
इस तथ्य के कारण कि एम्बेडेड कंटेनर @WebServlet, @WebFilter और @WebListener एनोटेशन का समर्थन नहीं करते हैं, स्प्रिंग बूट, एम्बेडेड कंटेनरों पर बहुत भरोसा करते हुए, इस नए एनोटेशन @ServletComponentScan को कुछ आश्रित जार का समर्थन करने के लिए पेश किया जो इन 3 एनोटेशन का उपयोग करते हैं।
स्कैन तभी किया जाता है जब एक एम्बेडेड सर्वलेट कंटेनर का उपयोग किया जाता है।
निम्नलिखित मेरी स्प्रिंग बूट एप्लीकेशन क्लास परिभाषा है: -
कस्टम सर्वलेट इनिशिएटिव:
यहाँ: मैंने एक कस्टम क्लास परिभाषित किया है: "सर्वलेट इंसुलेटर" जो कि क्लास को बढ़ाता है: स्प्रिंगबूटसर्वलेट इंसुलेटर।
जैसा कि पहले बताया गया है, स्प्रिंगबूटसर्वलेट
इंसुलेटर, एनोटेशन स्कैन करने के लिए जिम्मेदार है: - - @WebFilter,
- @WebListener और
- @WebServlet।
और इसलिए स्प्रिंग बूट एप्लीकेशन क्लास चाहिए
- या तो वर्ग का विस्तार करें: SpringBootServletInitializer OR
- कस्टम वर्ग का विस्तार करें जो वर्ग का विस्तार करता है: स्प्रिंगबूटसर्वलेट इंसुलेटर