Trang chủHướng dẫnSpring Framework: Cấu trúc, thành phần và các dự án
Java

Spring Framework: Cấu trúc, thành phần và các dự án

CyStack blog 5 phút để đọc
CyStack blog14/09/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 5 minutes

Spring Framework

Spring Framework là một trong những framework Java EE phổ biến nhất hiện nay. Trong bài viết này, chúng ta sẽ tìm hiểu về:

  • Kiến trúc của Spring Framework
  • Các thành phần cốt lõi trong Spring
  • Các dự án thuộc hệ sinh thái Spring

Tôi đã xem biểu đồ Google Trends so sánh giữa Spring Framework, Servlet, JSP và JSF. Rõ ràng, Spring đang vượt xa các công nghệ Java EE còn lại.

Spring Framework

Spring Framework – Google Trends

Spring Framework là gì?

Spring là một trong những framework phổ biến nhất dành cho nền tảng Java Enterprise Edition. Các lập trình viên trên toàn thế giới sử dụng Spring để phát triển những ứng dụng uy tín và chất lượng cao.

Spring Framework được thiết kế bởi Rod Johnson. Kể từ đó, Spring đã trở thành một công nghệ thay thế cho mô hình EJB trong thế giới Java. Bạn có thể xây dựng nhiều loại ứng dụng khác nhau bằng cách sử dụng Spring Framework.

Các khái niệm cốt lõi trong Spring: DI, IoC, AOP

Bạn sẽ không thể hiểu đầy đủ về Spring Framework nếu không nắm vững hai khái niệm cốt lõi là Dependency Injection (DI) và Inversion of Control (IoC). Trong đó, DI là một hình thức cụ thể của nguyên lý IoC.

  • Inversion of Control là một nguyên lý trong lập trình hướng đối tượng, theo đó các đối tượng trong chương trình không phụ thuộc trực tiếp vào các hiện thực cụ thể của đối tượng khác, mà chỉ tương tác thông qua các dạng trừu tượng (interface) để phục vụ cho việc tương tác sau này.
  • Dependency Injection là sự kết hợp của các mẫu thiết kế cấu trúc, trong đó mỗi chức năng của ứng dụng được đảm nhiệm bởi một đối tượng tương đối độc lập (service). Đối tượng này có thể cần sử dụng các đối tượng khác (dependency), vốn được biết đến thông qua các interface. Các dependency này được truyền (hoặc được cài đặt) vào service ngay tại thời điểm khởi tạo. Đây là tình huống mà ta đưa một thành phần của lớp này vào bên trong một lớp khác. Trong thực tế, DI được hiện thực thông qua việc truyền tham số vào constructor hoặc thông qua setter. Những thư viện triển khai phương pháp này còn được gọi là các IoC container.
  • Lập trình hướng khía cạnh (Aspect-Oriented Programming – AOP) là một mô hình lập trình cho phép bạn tách biệt các chức năng cắt ngang trong ứng dụng. Những chức năng này xuất hiện ở nhiều điểm trong hệ thống và được gọi là các mối quan tâm cắt ngang (cross-cutting concerns), thường được tách riêng khỏi logic nghiệp vụ chính của ứng dụng. Trong OOP, đơn vị chính là lớp; còn trong AOP, đơn vị chính là aspect. DI giúp chia các lớp trong ứng dụng thành các mô-đun riêng biệt, còn AOP giúp tách biệt các chức năng cắt ngang ra khỏi các đối tượng mà chúng tác động đến.

Kiến trúc của Spring Framework

Spring Framework được chia thành nhiều mô-đun riêng biệt, cho phép bạn lựa chọn những phần phù hợp để sử dụng trong ứng dụng. Hình minh họa dưới đây cho thấy các mô-đun quan trọng trong kiến trúc của Spring Framework.

Spring Framework

Hãy cùng tìm hiểu từng mô-đun trong hệ sinh thái Spring.

Các thành phần cốt lõi trong Spring Framework

Thành phần Core Container của Spring bao gồm bốn mô-đun: SpEL, Context, Core, và Beans. Mô tả của từng mô-đun như sau:

  • Mô-đun SpEL cung cấp một ngôn ngữ biểu thức mạnh mẽ để thao tác đối tượng trong thời gian chạy.
  • Mô-đun Context được xây dựng trên nền tảng Beans và Core, cho phép truy cập bất kỳ đối tượng nào đã được định nghĩa trong cấu hình. Thành phần chính trong mô-đun Context là interface ApplicationContext.
  • Mô-đun Core cung cấp các thành phần cốt lõi của framework, bao gồm các thuộc tính của IoC và DI.
  • Mô-đun Beans chịu trách nhiệm tạo và quản lý các Spring Bean – đơn vị cấu trúc của context trong ứng dụng.

Spring Framework Web

Lớp Web trong Spring Framework bao gồm các mô-đun: Web, Web-MVC, Web-Socket, Web-Portlet…

  • Mô-đun Web cung cấp các chức năng như tải tệp xuống, tạo ứng dụng web, REST Web Service…
  • Web-MVC chứa hiện thực Spring MVC dành cho các ứng dụng web.
  • Web-Socket hỗ trợ giao tiếp giữa client và server thông qua giao thức Web-Socket trong các ứng dụng web.
  • Web-Portlet cung cấp hiện thực MVC trong môi trường Portlet.

Spring Framework – Truy cập dữ liệu

Lớp Data Access/Integration trong Spring bao gồm các mô-đun: JDBC, ORM, OXM, JMS và Transactions.

  • JDBC cung cấp một lớp trừu tượng, giúp lập trình viên không phải lặp lại các đoạn mã xử lý kết nối cơ sở dữ liệu một cách thủ công.
  • Spring ORM tích hợp với các ORM phổ biến như Hibernate, JDO… là các hiện thực của JPA.
  • Mô-đun OXM chịu trách nhiệm liên kết giữa Object/XML – như XMLBeans, JAXB…
  • JMS (Java Messaging Service) chịu trách nhiệm tạo, gửi và nhận tin nhắn.
  • Transactions hỗ trợ quản lý giao dịch cho các lớp hiện thực một số phương thức nhất định và cho các POJO.

Các mô-đun khác trong Spring

Spring còn bao gồm một số mô-đun quan trọng khác như AOP, Aspects, Instrumentation, Messaging và Test.

  • AOP hiện thực lập trình hướng khía cạnh và cho phép sử dụng đầy đủ các tính năng của AOP.
  • Mô-đun Aspects cung cấp tích hợp với AspectJ – một framework AOP toàn diện.
  • Instrumentation hỗ trợ việc tác động lên class và class loader, được sử dụng trong các ứng dụng chạy trên server.
  • Mô-đun Messaging hỗ trợ STOMP.
  • Cuối cùng, mô-đun Test cung cấp khả năng kiểm thử với TestNG hoặc JUnit Framework.

Các tính năng của Spring 5

Spring 5 là một bản cập nhật lớn so với Spring 4, với nhiều tính năng nổi bật, bao gồm:

  • Hỗ trợ Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0, và JPA 2.2 – cho thấy nỗ lực của Spring trong việc bắt kịp các công nghệ nền tảng quan trọng mới nhất.
  • Cải tiến cơ chế ghi log thông qua mô-đun mới: spring-jcl.
  • Hỗ trợ thao tác tệp sử dụng luồng NIO 2, từ đó nâng cao hiệu năng xử lý I/O.
  • Tích hợp Reactor 3.1 (với Flux và Mono), cũng như hỗ trợ RxJava 1.3 và 2.1 làm kiểu trả về trong các phương thức controller của Spring MVC.
  • Hỗ trợ Kotlin, Project Lombok, và JSON Binding API như những lựa chọn thay thế cho Jackson và GSON.
  • Spring WebFlux – Spring chuyển mình sang mô hình lập trình phản ứng (Reactive).
  • Hỗ trợ JUnit 5.
  • Bổ sung khả năng lập trình hàm thông qua Kotlin.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất