Spring Boot Starters là gì? – Cơ chế của Spring Boot

Spring Boot Starters là gì? – Cơ chế của Spring Boot

Spring Boot Starters là gì?

Spring Boot kết hợp nhiều packages (trong Maven & Gradle) giúp bạn có thể include những hỗ trợ phù hợp cho project của bạn.

Ở level cao nhất có 6  starters packages:

Spring Boot Starters là gì? - Cơ chế của Spring Boot

Spring Boot Starter giúp dễ dàng quản lý các dependencies, tự động config.

Spring Boot Starter thể hiện qua các dependencies dạng spring-boot-starter-*.

  • Dependency springboot-starter-web mặc định cung cấp các thư viện để phát triển ứng dụng Spring MVC như spring-webmvc, jackson-json, validation-api and tomcat. Ngoài ra  spring-boot-starter-web còn cấu hình các bean chung như DispatcherServlet, ResourceHandlers, MessageSource
  • Dependency spring-boot-starter-data-jpa sẽ lấy ra các dependency của spring-data-jpa và cũng thêm các thư viện Hibernate bởi vì hầu hết các ứng dụng đều sử dụng Hibernate làm cài đặt của JPA
  • Dependency spring-boot-starter-Thymeleaf thêm thư viện Thymeleaf và cấu hình bean ThymeleafViewResolver.

Chúng ta không cần định nghĩa các bean DataSource, EntityManagerFactory, TransactionManager… chúng được tạo một cách tự động.

Làm thế nào để chúng được tạo tự động?

Nếu có bất kỳ database drivers nào như H2 hoặc HSQL trong classpath, Spring Boot sẽ tự động tạo Datasource và đăng ký bean EntityManagerFactory, TransactionManager một cách tự động với các mặc định hợp lý.

Nhưng với từng hệ quản trị cơ sở dữ liệu khác nhau (ví dụ MySQL, PostgreSQL…) chúng ta phải cung cấp connection một cách chi tiết (url, username/password…) trong file application.properites

Hỗ trợ nhúng Servlet Container

  • Sau khi run method main của ứng dụng từ file class được đánh dấu @SpringApplication, chúng ta có thể truy cập ứng dụng ở dường dẫn http://localhost:8080/.

Để có thể chạy ứng dụng web như thế, Spring boot đã nhúng sẵn Servlet Container vào ứng dụng.

Từ khi bạn thêm spring-boot-starter-web thì spring-boot-starter-tomcat đã được thêm tự động và khi run method main() thì nó sẽ start tomcat được nhúng bên trong nên chúng ta không cần deploy ứng dụng lên bất kì server nào.

  • Bạn cũng có thể export ứng dụng thành file war và triển khai nó như bình thường.
  • Trường hợp không muốn dùng tomcat mà muốn dùng jetty server ta exclude spring-bootstarter-tomcat từ spring-boot-starter-web và include spring-boot-starter-jetty

 

Spring Boot Starters là gì? – Cơ chế của Spring Boot

Okay, Done!

 

References:

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/

stackjava.com