Học viên: Phạm Thế Dương
Email: duongphamhn97@gmail.com
Bài viết gốc: https://dev.to/maddy/spring-boot-architecture-547i
Spring Boot là một phiên bản của Spring Framework, nhưng thân thiện hơn với người sử dụng. Với Spring Boot, bạn có thể tạo các ứng dụng có tính tự động hoá cao và được khởi chạy một cách dễ dàng.
Sự khác biệt giữa Spring và Spring Boot
Nếu bạn từng viết ứng dụng Java hồi xưa, bạn có thể thấy biết bao công sức phải bỏ ra để thực hiện các tác vụ với database. Đó là một quá trình mệt mỏi!
Spring Framework đã đơn giản hoá các tác vụ đó, nhờ có module Spring JDBC.
Spring là tập hợp của nhiều framework con. Nó có nhiều module như Spring MVC, Spring JDBC, Spring AOP, Spring ORM và Spring Test. Tính năng cốt lõi của Spring Framework chính là Dependency Injection.
Mặc dù Spring đã khiến cho việc phát triển các ứng dụng Java dễ dàng hơn, tôi nghĩ việc này vẫn rất rộng lớn và phức tạp để có thể thành thục. Trước đây, tôi đã từng thử học Spring Framework từ con số 0, tôi thấy đó thực sự là một trải nghiệm dài đằng đẵng. Tuy nhiên đó là lúc mà Spring Boot tỏ ra tuyệt vời.
Spring Boot là gì?
Spring Boot được xây dựng dựa trên nền của Spring Framework. Nó là một phiên bản có tính tự động hoá cao hơn và đơn giản hơn của Spring. Spring Boot khiến cho việc tạo và khởi chạy ứng dụng chỉ diễn ra trong vòng vài phút. Bạn truy cập vào Spring Initializr
Và trang web sẽ tạo ra dự án cho bạn trong nháy mắt.
Nếu bạn chần chừ không biết nên học Spring hay Spring Boot, tôi khuyên rằng bạn nên học ít nhất những kiến thức cơ bản của Spring Framework rồi mới đi vào học Spring Boot.
Giờ hãy nói về kiến trúc Spring Boot.
Kiến trúc Spring Boot
Kiến trúc Spring Boot có 4 lớp:
- Lớp Presentation
- Lớp Business
- Lớp Persistence
- Lớp Database
Lớp Presentation
Lớp này nằm trên cùng của kiến trúc Spring Boot. Nó chịu trách nhiệm:
- Thực hiện authentication (xác thực).
- Chuyển đổi dữ liệu JSON thành đối tượng (và ngược lại).
- Xử lý các HTTP request
- Truyền authentication tới lớp bussiness
Lớp presentation tương ứng với class Controller. Class Controller xử lý tất cả các REST API request (GET, POST, PUT, DELETE, PATCH) đến từ client.
Lớp Business
Lớp này chịu trách nhiệm:
- Thực hiện validation.
- Thực hiện authorization (uỷ quyền).
- Xử lý các logic và quy tắc nghiệp vụ.
Lớp này tương ứng với class Service, là nơi xử lý logic nghiệp vụ. Nếu bạn băn khoăn không biết “logic nghiệp vụ” là gì theo ý của chúng tôi, bạn có thể xem một bài thảo luận thú vị trên StackExchange. Ngắn gọn thì logic nghiệp vụ trong kỹ nghệ phần mềm là những gì mà chúng ta xác định phần mềm cần phải làm. Một ví dụ là validation. Nếu bạn muốn validate gì đó, nó phải được thực hiện trong class Service.
Lớp Business giao tiếp với lớp Presentation và lớp Persistence.
Lớp Persistence
Lớp này chịu trách nhiệm:
- Chứa các logic lưu trữ
- Lấy các đối tượng và chuyển đổi thành các hàng trong database (và ngược lại).
Lớp này tương ứng với interface Repository. Chúng ta viết các truy vấn tới database trong interface này.
Lớp Persistence là lớp duy nhất giao tiếp với lớp Business và lớp Database.
Lớp Database
Lớp này chịu trách nhiệm:
- Thực hiện các tác vụ với database (chủ yếu là CRUD).
Lớp này đơn giản là database trong thực tế bạn dùng trong ứng dụng của mình.
Workflow của Spring Boot
Workflow của Spring Boot hoạt động như sau:
- Client tạo một HTTP request.
- Class Controller nhận HTTP request.
- Controller hiểu loại request và xử lý nó.
- Nếu cần, nó gọi class Service.
- Class Service sẽ xử lý logic nghiệp vụ, với dữ liệu từ database
- Nếu mọi thứ hoạt động tốt, ta sẽ trả về một trang JSP.
Cảm ơn đã đọc bài viết của tôi. Hẹn gặp lại!
Bình luận