Giới thiệu về Spring Boot


Spring Boot là một framework built on top of Spring Framework để simplify quá trình development của các ứng dụng có sử dụng Spring Framework. Nó cung cấp cho chúng ta các cơ chế auto-configuration bằng cách cung cấp các cấu hình mặc định cho các Spring modules, ví dụ như Spring MVC, Spring Data JPA… Nó cũng cung cấp cơ chế quản lý các dependency, các tính năng cần thiết cho các ứng dụng trong môi trường production. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này, các bạn nhé!

Điều đầu tiên mình muốn nói với các bạn là các bạn có thể tạo mới một Spring Boot project sử dụng:

Mình sẽ tạo mới một Spring Boot project sử dụng IntelliJ IDE như sau:

Bây giờ thì chúng ta sẽ nói về cơ chế auto-configuration của Spring Boot trước.

Trong quá khứ, khi phát triển các ứng dụng Java sử dụng các Spring modules như Spring MVC, Spring Data JPA mà không có Spring Boot, các bạn phải tự khai báo dependency mà mình cần sử dụng, khai báo các bean mà ứng dụng cần sử dụng trong Spring container, cấu hình các thông tin liên quan đến ví dụ như Spring MVC, Spring Data JPA, cấu hình server runtime để chạy ứng dụng. Spring Boot giúp chúng ta giảm thiểu những step này bằng cách sử dụng các cấu hình mặc định.

Để làm việc với Spring Boot, chúng ta sẽ thêm các Starter dependency.

Ví dụ như để hiện thực các ứng dụng web với Spring Boot, các bạn có thể thêm spring-boot-starter-webmvc dependency như sau:

Với khai báo dependency như này, Spring Boot sẽ tự động include các dependency liên quan đến Spring MVC web vào project của chúng ta đó các bạn.

Khi chạy ứng dụng, Spring Boot sẽ dựa vào thông tin dependency có trong trong classpath của ứng dụng để tự động apply các cấu hình mặc định. Ví dụ như cho Spring Starter WebMVC thì Spring Boot sẽ tự động apply một số cấu hình mặc định như sau:

  • Đăng ký DispatcherServlet
  • Servlet context path là “/”
  • Sử dụng Apache Tomcat server để chạy ứng dụng
  • …

Mình sẽ đề cập chi tiết đến cơ chế auto-configuration của Spring Boot trong các bài viết sau, các bạn nhé.

Đối với các ứng dụng thuần Spring Framework thì để chạy ứng dụng, chúng ta sẽ cần deploy nó lên một Server Runtime như Apache Tomcat, Jetty, … Đối với Spring Boot application thì các bạn không cần làm điều này để chạy ứng dụng.

Spring Boot sử dụng một embedded server runtime, mặc định là Apache Tomcat để chạy ứng dụng đó các bạn!

Các bạn chỉ cần chạy ứng dụng Spring Boot với command “java -jar” và trỏ tới tập tin của ứng dụng Spring Boot là có thể chạy ứng dụng lên rồi. Điều này rất thuận lợi khi chúng ta deploy các ứng dụng Spring Boot sử dụng containerization với Docker, Kubernetes, cloud-native, CI/CD.

Spring Boot không chỉ giúp cho quá trình development các ứng dụng Java sử dụng Spring Framework thuận lợi hơn mà nó còn cung cấp các tính năng cần thiết khi chạy ứng dụng lên môi trường production.

Ví dụ như nếu các bạn sử dụng module Spring Boot Actuator trong ứng dụng của mình thì khi chạy ứng dụng này, Spring Boot sẽ tự động expose thêm các endpoint, ví dụ như:

  • /actuator/health
  • /actuator/info
  • /actuator/metrics

giúp chúng ta có thể monitor ứng dụng đang chạy.

Cho cái Spring MVC project được tạo từ Maven Archetype “huongdanjava-springmvc-archetype” mà mình đã giới thiệu trong bài viết Tạo mới Spring MVC project sử dụng huongdanjava-spring-mvc-archetype, các bạn có thể viết lại với Spring Boot như sau:

Nội dung của tập tin HomeController thì như trong project spring-mvc-example, các bạn nhé!

Tập tin application.yml sẽ có nội dung như sau:

Các bạn cũng cần phải thêm một số dependency như sau:

để Spring Boot có thể render JSP file với JSTL engine cho đúng các bạn nhé!

Chạy ứng dụng Spring Boot này, các bạn cũng sẽ thấy kết quả tương tự.

Add Comment