Boot Musim Semi Tanpa Server Web

1. Perkenalan

Spring Boot adalah kerangka kerja yang bagus untuk membuat aplikasi Java baru dengan cepat untuk berbagai kasus penggunaan. Salah satu kegunaan paling populer adalah sebagai server web, menggunakan salah satu dari banyak wadah servlet tertanam dan mesin templat yang didukung.

Namun, Spring Boot memiliki sejumlah kegunaan yang tidak memerlukan server web : aplikasi konsol, penjadwalan pekerjaan, pemrosesan batch atau streaming, aplikasi tanpa server, dan banyak lagi.

Dalam tutorial ini, kita akan melihat beberapa cara berbeda untuk menggunakan Spring Boot tanpa server web.

2. Menggunakan Dependensi

Cara termudah untuk mencegah aplikasi Spring Boot memulai server web tertanam adalah dengan tidak menyertakan starter server web dalam dependensi kami .

Ini berarti tidak menyertakan dependensi spring-boot-starter-web baik dalam file build Maven POM atau Gradle. Sebagai gantinya, kami ingin menggunakan dependensi spring-boot-starter yang lebih mendasar sebagai gantinya.

Perlu diingat bahwa dependensi Tomcat dapat disertakan dalam aplikasi kita sebagai dependensi transitif . Dalam kasus ini, kita mungkin perlu mengecualikan pustaka Tomcat dari dependensi mana pun yang menyertakannya.

3. Memodifikasi Aplikasi Pegas

Cara lain untuk menonaktifkan server web tertanam di Spring Boot adalah dengan menggunakan kode. Kita bisa menggunakan SpringApplicationBuilder :

new SpringApplicationBuilder(MainApplication.class) .web(WebApplicationType.NONE) .run(args);

Atau kita bisa menggunakan referensi ke SpringApplication :

SpringApplication application = new SpringApplication(MainApplication.class); application.setWebApplicationType(WebApplicationType.NONE); application.run(args);

Dalam kedua kasus tersebut, kami memiliki keuntungan dengan menjaga servlet dan container API tersedia di classpath . Ini berarti kita masih dapat menggunakan perpustakaan server web tanpa memulai server web. Ini bisa berguna, misalnya, jika kita ingin menggunakannya untuk menulis tes atau menggunakan API mereka dalam kode kita sendiri.

4. Menggunakan Properti Aplikasi

Menggunakan kode untuk menonaktifkan server web adalah opsi statis - ini akan memengaruhi aplikasi kami di mana pun kami menerapkannya. Tetapi bagaimana jika kita ingin membuat web server dalam keadaan tertentu?

Dalam hal ini, kita dapat menggunakan properti aplikasi Spring:

spring.main.web-application-type=none

Atau menggunakan YAML yang setara:

spring: main: web-application-type: none

Manfaat dari pendekatan ini adalah kita dapat mengaktifkan server web secara bersyarat . Menggunakan profil atau kondisional Spring, kita dapat mengontrol perilaku server web dalam penerapan yang berbeda.

Misalnya, kami dapat menjalankan server web dalam pengembangan hanya untuk mengekspos metrik atau titik akhir Spring lainnya sambil tetap menonaktifkannya dalam produksi untuk alasan keamanan.

Perhatikan bahwa beberapa versi Spring Boot menggunakan properti boolean bernama lingkungan web untuk mengaktifkan dan menonaktifkan server web. Dengan adopsi wadah tradisional dan reaktif di Spring Boot, properti telah berganti nama dan sekarang menggunakan enum .

5. Kesimpulan

Ada banyak alasan untuk membuat aplikasi Spring Boot tanpa server web. Dalam tutorial ini, kami telah melihat banyak cara untuk melakukan ini. Masing-masing memiliki pro dan kontra sendiri, jadi kita harus memilih pendekatan yang paling sesuai dengan kebutuhan kita.