Seperti yang Anda ketahui, Spring Boot adalah cara luar biasa untuk mengembangkan WebApp atau StandaloneApp dengan konfigurasi minimum dan Pengaturan yang disarankan.
Ini adalah bagaimana saya telah mencapai Pengembangan Web Filter di aplikasi Spring Boot
Spesifikasi SpringBootApp Saya: -
Versi Spring Boot: 2.0.4.RELEASE
Versi Java: 8.0
Spesifikasi Servlet: Servlet 3.0 (Wajib dan Penting)
Saya mendeklarasikan Filter Web saya dengan cara berikut, mengikuti Servlet Spesifikasi 3.0
Ini adalah cara terprogram untuk mendefinisikan Filter sebagai pengganti definisi berbasis web.xml.
"@Webfilter" anotasi akan diproses oleh wadah selama penyebaran, kelas Filter tempat ditemukan akan dibuat sesuai konfigurasi dan diterapkan ke pola URL, javax.servlet.Servlets dan javax.servlet.DispatcherTypes.
Untuk menghindari Web.xml sepenuhnya dan mencapai WebApp "Deployable": -
Untuk menggunakan Aplikasi Boot Spring sebagai "PERANG Tradisional", kelas aplikasi harus memperluas SpringBootServletInitializer.
CATATAN ::
SpringBootServletInitializer adalah "Implementasi Programmatic" dari web.xml dengan mengacu pada spesifikasi Servlet 3.0+, yang memerlukan implementasi WebApplicationInitializer.
Dengan demikian, SpringBootApplication tidak memerlukan "web.xml" sebagai kelas Aplikasi (setelah memperpanjang SpringBootServletInitializer) memindai
- @WebFilter,
- @WebListener dan
- @WebServlet.
Anotasi @ServletComponentScan
Anotasi ini memungkinkan pemindaian paket dasar untuk komponen web yang dianotasi dengan @WebFilter, @WebListener dan @WebServlet.
Karena kenyataan bahwa wadah yang disematkan tidak mendukung anotasi @WebServlet, @WebFilter dan @WebListener, Spring Boot, sangat bergantung pada wadah yang disematkan, memperkenalkan anotasi baru ini @ServletComponentScan untuk mendukung beberapa toples dependen yang menggunakan 3 anotasi ini.
Pemindaian hanya dilakukan saat menggunakan wadah Servlet tertanam.
Berikut ini adalah Definisi Kelas Aplikasi Boot Spring saya: -
Inisialisasi Custom Servlet: -
Di sini: Saya telah mendefinisikan Kelas Kustom: "ServletInitializer" yang memperluas Kelas: SpringBootServletInitializer.
Seperti yang dijelaskan sebelumnya, SpringBootServletInitializer bertanggung jawab untuk memindai anotasi: -
- @WebFilter,
- @WebListener dan
- @WebServlet.
Dan karenanya Kelas Aplikasi Boot Musim Semi seharusnya
- Baik memperpanjang kelas: SpringBootServletInitializer OR
- rentangkan kelas Kustom yang memperluas kelas: SpringBootServletInitializer