Pengenalan Pantas ke SpringBootServletInitializer

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melalui pengenalan pantas SpringBootServletInitializer .

Ini adalah lanjutan dari WebApplicationInitializer yang menjalankan SpringApplication dari arkib WAR tradisional yang digunakan pada wadah web. Kelas ini mengikat biji Servlet , Filter dan ServletContextInitializer dari konteks aplikasi ke pelayan.

Memperluas kelas SpringBootServletInitializer juga membolehkan kita mengkonfigurasi aplikasi kita ketika dijalankan oleh wadah servlet, dengan mengesampingkan kaedah configure () .

2. SpringBootServletInitializer

Untuk lebih praktikal, kami akan menunjukkan contoh kelas utama yang memperluas kelas Initializer .

Kami @SpringBootApplication kelas dipanggil WarInitializerApplication memanjangkan SpringBootServletInitializer dan mengatasi yang configure () kaedah. Kaedah itu menggunakan SpringApplicationBuilder untuk hanya mendaftarkan kelas kami sebagai kelas konfigurasi aplikasi:

@SpringBootApplication public class WarInitializerApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) { return builder.sources(WarInitializerApplication.class); } public static void main(String[] args) { SpringApplication sa = new SpringApplication( WarInitializerApplication.class); sa.run(args); } @RestController public static class WarInitializerController { @GetMapping("/") public String handler() { // ... } } } 

Sekarang, jika kita mengemas aplikasi kita sebagai PERANG, kita akan dapat menyebarkannya ke wadah web mana pun dengan cara tradisional, yang juga akan melaksanakan logik yang kita tambahkan dalam metode configure () .

Sekiranya kita ingin membungkusnya sebagai fail JAR, maka kita perlu menambahkan logik yang sama dengan kaedah utama () supaya bekas yang disisipkan dapat mengambilnya juga.

3. Kesimpulannya

Dalam artikel ini, kami memperkenalkan SpringBootServletInitializer dan menunjukkan bagaimana kami dapat menggunakannya untuk menjalankan aplikasi Spring Boot dari arkib WAR klasik.

Kod sumber lengkap untuk contoh boleh didapati di GitHub. Ini adalah projek berasaskan Maven, sehingga dapat diimport dan digunakan sebagaimana adanya.