1. Spring Boot Là Gì ?
Spring Boot được xây dựng và phát triển trên nền tảng Spring Framework. Ý tưởng của các nhà thiết kế Spring Boot là đơn giản hóa việc cấu hình ứng dụng bằng việc loại bỏ cấu hình bằng file XML và tích hợp các HTTP Embedded Server như Tomcat, Jetty hoặc Undertow để nó có thể chạy độc lập. Để cho dễ hiểu mời các bạn xem hình phía dưới:
2. Tại Sao Chúng Ta Nên Chọn Spring Boot
- Spring Boot hướng thiết kế ứng dụng theo kiểu module nên dễ dàng tháo lắp (nói dễ hiểu là như vậy).
- Nó có khả năng quản lý các Transaction một cách mạnh mẽ và hiệu quả.
- Nó đơn giản hóa việc tích hợp với các Library và Java Framework khác như JPA, Hibernate, Kafka, Struts..vv.
- Nó giúp giảm giá thành và thời gian phát triển ứng dụng.
3. Kiến Trúc Spring Boot
Spring Boot chia ứng dụng ra làm 4 tầng như sau:
- Presentation Layer: Đây là tầng trên cùng của Spring Boot bao gồm có View và một phần front-end của ứng dụng. Ở tầng này Spring Boot sẽ nhận các request từ người dùng rồi tiến hành xử lý xác thực. Nó sẽ xử lý chuyển đổi từ đối tượng JSON sang đối tượng Java và ngược lại. Khi xác thực được thực hiện thành công nó sẽ được chuyển sang tầng tiếp theo là Business Layer.
- Business Layer: Tầng này sẽ xử lý tất cả các yêu cầu nghiệp vụ (Business Logic) bao gồm các lớp Service và sử dụng các service được cung cấp bởi tầng DAO. Nó chịu trách nhiệm xác nhận/kiểm duyệt dữ liệu và ủy quyền cho user.
- Persistence Layer: Bao gồm tất cả các logic liên quan đến database. Tầng này chịu trách nhiệm chuyển đổi đối tượng Java sang đối tượng database và ngược lại.
- Database Layer: Bao gồm tất cả các database RDBMS, NoSQL. Nó chịu trách nhiệm thực hiện CRUD dữ liệu vào database.
4. Sơ Đồ Luồng Của Spring Boot
- Client tạo HTTP request (GET, POST, PUT,..)
- HTTP request được chuyển đến Controller. Controller sẽ xử lý và điều hướng request đến service logic tương ứng.
- Tất cả các business logic sẽ được thực hiện ở tầng Service Layer này. Spring boot xử lý tất cả dữ liệu trên database được ánh xạ thông qua các Model
- Controller sẽ trả về kết quả phản hồi cho Client.