Kiến trúc Spring Boot

11 tháng 09, 2022 – 277 lượt xem

Học viên: Phạm Thế Dương
Email: [email protected]
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
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
    spring boot architecture

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

spring boot workflow
Workflow của Spring Boot hoạt động như sau:

  1. Client tạo một HTTP request.
  2. Class Controller nhận HTTP request.
  3. Controller hiểu loại request và xử lý nó.
  4. Nếu cần, nó gọi class Service.
  5. Class Service sẽ xử lý logic nghiệp vụ, với dữ liệu từ database
  6. 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!