Konfigurasikan Aplikasi Web Spring Boot

1. Ikhtisar

Spring Boot dapat melakukan banyak hal; dalam tutorial ini, kita akan membahas beberapa opsi konfigurasi yang lebih menarik di Boot.

2. Nomor Port

Dalam aplikasi utama yang berdiri sendiri, port HTTP utama secara default adalah 8080; kita dapat dengan mudah mengkonfigurasi Boot untuk menggunakan port yang berbeda :

server.port=8083

Dan untuk, konfigurasi berbasis YAML:

server: port: 8083

Kami juga dapat menyesuaikan port server secara terprogram:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactory container) { container.setPort(8083); } }

3. Jalur Konteks

Secara default, jalur konteksnya adalah "/". Jika itu tidak ideal dan Anda perlu mengubahnya - menjadi sesuatu seperti / app_name , berikut cara cepat dan sederhana untuk melakukannya melalui properti:

server.servlet.contextPath=/springbootapp

Dan untuk konfigurasi berbasis YAML:

server: servlet: contextPath:/springbootapp

Terakhir - perubahan juga dapat dilakukan secara terprogram:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactorycontainer) { container.setContextPath("/springbootapp"); } }

4. Halaman Kesalahan Label Putih

Spring Boot secara otomatis mendaftarkan BasicErrorControllerkacang jika Anda tidak menentukan implementasi kustom apa pun dalam konfigurasi.

Namun, pengontrol default ini tentu saja dapat dikonfigurasi:

public class MyCustomErrorController implements ErrorController { private static final String PATH = "/error"; @GetMapping(value=PATH) public String error() { return "Error haven"; } @Override public String getErrorPath() { return PATH; } }

5. Sesuaikan Pesan Kesalahan

Boot menyediakan / pemetaan kesalahan secara default untuk menangani kesalahan dengan cara yang masuk akal.

Jika Anda ingin mengonfigurasi halaman kesalahan yang lebih spesifik, ada dukungan yang baik untuk Java DSL seragam untuk menyesuaikan penanganan kesalahan:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactorycontainer) { container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400")); container.addErrorPages(new ErrorPage("/errorHaven")); } }

Di sini, kami secara khusus menangani Permintaan Buruk untuk mencocokkan jalur / 400 dan yang lainnya untuk mencocokkan jalur umum.

Dan implementasi / errorHaven yang sangat sederhana :

@GetMapping("/errorHaven") String errorHeaven() { return "You have reached the haven of errors!!!"; }

Keluaran:

You have reached the haven of errors!!!

6. Matikan Aplikasi Boot Secara Terprogram

Anda dapat menutup aplikasi Boot secara terprogram dengan bantuan SpringApplication. Ini memiliki metode exit () statis yang mengambil dua argumen: ApplicationContext dan ExitCodeGenerator :

@Autowired public void shutDown(ExecutorServiceExitCodeGenerator exitCodeGenerator) { SpringApplication.exit(applicationContext, exitCodeGenerator); }

Melalui metode utilitas inilah kita dapat mematikan aplikasi.

7. Konfigurasi Tingkat Logging

Anda dapat dengan mudah menyetel level logging dalam aplikasi Boot ; Mulai dari versi 1.2.0 dan seterusnya, Anda dapat mengonfigurasi level log di file properti utama:

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

Dan seperti halnya dengan aplikasi Spring standar - Anda dapat mengaktifkan sistem logging yang berbeda seperti Logback , log4j , log4j2 , dll dengan menambahkan file XML atau properti yang disesuaikan di classpath dan menentukan pustaka di pom.

8. Daftarkan Servlet Baru

Jika Anda menerapkan aplikasi dengan bantuan server tertanam, Anda dapat mendaftarkan Servlet baru dalam aplikasi Boot dengan menampilkannya sebagai kacang dari konfigurasi konvensional:

@Bean public HelloWorldServlet helloWorld() { return new HelloWorldServlet(); }

Atau, Anda dapat menggunakan ServletRegistrationBean :

@Bean public SpringHelloServletRegistrationBean servletRegistrationBean() { SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean( new SpringHelloWorldServlet(), "/springHelloWorld/*"); bean.setLoadOnStartup(1); bean.addInitParameter("message", "SpringHelloWorldServlet special message"); return bean; }

9. Konfigurasi Jetty atau Undertow di Aplikasi Boot

Pemula Spring Boot umumnya menggunakan Tomcat sebagai server tertanam default . Jika itu perlu diubah - Anda dapat mengecualikan ketergantungan Tomcat dan menyertakan Jetty atau Undertow sebagai gantinya:

Konfigurasi Jetty

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty 
@Bean public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() { JettyEmbeddedServletContainerFactory jettyContainer = new JettyEmbeddedServletContainerFactory(); jettyContainer.setPort(9000); jettyContainer.setContextPath("/springbootapp"); return jettyContainer; }

Konfigurasi Undertow

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow 
@Bean public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() { UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory(); factory.addBuilderCustomizers(new UndertowBuilderCustomizer() { @Override public void customize(io.undertow.Undertow.Builder builder) { builder.addHttpListener(8080, "0.0.0.0"); } }); return factory; }

10. Kesimpulan

Dalam artikel singkat ini, kami membahas beberapa opsi konfigurasi Spring Boot yang lebih menarik dan berguna .

Tentu saja ada banyak, lebih banyak opsi untuk mengonfigurasi dan menyesuaikan aplikasi Boot dengan kebutuhan Anda di dokumen referensi - ini hanya beberapa yang lebih berguna yang saya temukan.