כיצד להגדיר פילטר אתחול קפיץ?

1. סקירה כללית

במדריך מהיר זה, נחקור כיצד להגדיר פילטרים מותאמים אישית ולציין את סדר הפתיחה שלהם בעזרת Spring Boot.

2. הגדרת מסננים וסדר הפנייה

נתחיל ביצירת שני פילטרים:

  1. TransactionFilter - להתחיל ולבצע עסקאות
  2. RequestResponseLoggingFilter - לרשום בקשות ותגובות

על מנת ליצור פילטר, עלינו ליישם את ה- לְסַנֵן מִמְשָׁק:

@Component @Order (1) TransactionFilter מחלקה ציבורית מיישם מסנן {@Override public void doFilter ServletRequest בקשה, תגובה ServletResponse, FilterChain) זורק IOException, ServletException {HttpServletRequest req = (HttpServletRequest) בקשה; LOG.info ("התחלת עסקה עבור בקשה: {}", req.getRequestURI ()); chain.doFilter (בקשה, תגובה); LOG.info ("ביצוע עסקה עבור דרישה: {}", req.getRequestURI ()); } // שיטות אחרות} 
@Component @Order (2) מחלקה ציבורית RequestResponseLoggingFilter מיישם מסנן {@Override public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) זורק IOException, ServletException {HttpServletRequest req = (HttpServletRequest) HttpServletResponse res = (HttpServletResponse) תגובה; LOG.info ("בקשת רישום {}: {}", req.getMethod (), req.getRequestURI ()); chain.doFilter (בקשה, תגובה); LOG.info ("תגובת רישום: {}", res.getContentType ()); } // שיטות אחרות} 

כדי שאביב יוכל לזהות פילטר, היינו צריכים להגדיר אותו כשעועית עם @רְכִיב ביאור.

וכדי שהמסננים יופעלו בסדר הנכון - היינו צריכים להשתמש ב @להזמין ביאור.

2.1. סנן עם דפוס כתובת אתר

בדוגמה שלמעלה, המסננים שלנו רשומים כברירת מחדל לכל כתובות ה- URL ביישום שלנו. עם זאת, ייתכן שנרצה לפעמים שמסנן יחול רק על דפוסי URL מסוימים.

במקרה זה, עלינו להסיר את @רְכִיב ביאור מהגדרת מחלקת הפילטר ו לרשום את המסנן באמצעות FilterRegistrationBean:

@Bean FilterRegistrationBean loggingFilter () {FilterRegistrationBean registrationBean = filterRegistrationBean חדש (); registrationBean.setFilter (RequestResponseLoggingFilter חדש ()); registrationBean.addUrlPatterns ("/ משתמשים / *"); רישום החזרת שעועית; }

כעת המסנן יחול רק על נתיבים התואמים את / משתמשים / * תבנית.

כדי להגדיר דפוסי URL עבור המסנן, אנו יכולים להשתמש ב- addUrlPatterns () אוֹ setUrlPatterns () שיטות.

3. דוגמה מהירה

בואו ניצור נקודת קצה פשוטה ונשלח אליה בקשת HTTP:

@RestController @RequestMapping ("/ users") מחלקה ציבורית UserController {@GetMapping () ציבורית רשימה getAllUsers () {// ...}}

יומני היישומים על פגיעה ב- API זה הם:

23:54:38 INFO com.spring.demo.TransactionFilter - התחלת עסקה לשאלה: / משתמשים 23:54:38 INFO csdRequestResponseLoggingFilter - בקשת רישום GET: / משתמשים ... 23:54:38 INFO csdRequestResponseLoggingFilter - רישום תגובה : application / json; charset = UTF-8 23:54:38 INFO com.spring.demo.TransactionFilter - ביצוע עסקה לשאלות: / משתמשים

זה מאשר שמסננים מופעלים לפי הסדר הרצוי.

4. מסקנה

במאמר זה סיכמנו כיצד להגדיר מסננים מותאמים אישית באפליקציית אינטרנט של Spring Boot.

כמו תמיד, ניתן למצוא קטעי קוד ב- GitHub.