Như bạn đã biết, Spring Boot là một cách tuyệt vời để phát triển WebApp hoặc StandAppApp với cấu hình tối thiểu và Thiết lập có ý kiến.
Đây là cách tôi đã đạt được Phát triển Bộ lọc Web trong ứng dụng Spring Boot
Thông số kỹ thuật SpringBootApp của tôi: -
Phiên bản Spring Boot: 2.0.4.RELEASE
Phiên bản Java: 8.0
Đặc điểm kỹ thuật của Servlet: Servlet 3.0 (Bắt buộc và quan trọng)
Tôi đã khai báo Bộ lọc Web của mình theo cách sau, tuân thủ Thông số kỹ thuật của Servlet 3.0
Đây là cách lập trình để xác định Bộ lọc thay thế cho các định nghĩa dựa trên web.xml.
Chú thích "@Webfilter" sẽ được xử lý bởi bộ chứa trong quá trình triển khai, lớp Bộ lọc được tìm thấy sẽ được tạo theo cấu hình và được áp dụng cho các mẫu URL, javax.servlet.Servlets và javax.servlet.DispatcherTypes.
Để tránh hoàn toàn Web.xml và để đạt được WebApp "Có thể triển khai": -
Để triển khai Ứng dụng khởi động mùa xuân dưới dạng "WAR truyền thống", lớp ứng dụng nên mở rộng SpringBootServletInitializer.
LƯU Ý ::
SpringBootServletInitializer là một "Triển khai lập trình" của tệp web.xml có tham chiếu đến các đặc tả của Servlet 3.0+, yêu cầu triển khai WebApplicationInitializer.
Do đó, SpringBootApplication không yêu cầu "web.xml" làm lớp Ứng dụng của nó (sau khi mở rộng SpringBootServletInitializer) quét cho
- @WebFilter,
- @WebListener và
- @WebServlet.
Chú thích @ServletComponentScan
Chú thích này cho phép quét các gói cơ sở cho các thành phần web được chú thích bằng @WebFilter, @WebListener và @WebServlet.
Do thực tế là các thùng chứa nhúng không hỗ trợ các chú thích @WebServlet, @WebFilter và @WebListener, Spring Boot, phụ thuộc rất nhiều vào các thùng chứa nhúng, đã giới thiệu chú thích mới này @ServletComponentScan để hỗ trợ một số lọ phụ thuộc sử dụng 3 chú thích này.
Quét chỉ được thực hiện khi sử dụng bộ chứa Servlet nhúng.
Sau đây là Định nghĩa lớp ứng dụng khởi động mùa xuân của tôi: -
Trình khởi tạo Servlet tùy chỉnh: -
Ở đây: Tôi đã định nghĩa một Lớp tùy chỉnh: "ServletInitializer" mở rộng Lớp: SpringBootServletInitializer.
Như đã giải thích trước đó, SpringBootServletInitializer chịu trách nhiệm quét các chú thích: -
- @WebFilter,
- @WebListener và
- @WebServlet.
Và do đó, lớp ứng dụng Spring Boot nên
- Hoặc mở rộng lớp: SpringBootServletInitializer HOẶC
- mở rộng Lớp tùy chỉnh mở rộng lớp: SpringBootServletInitializer