Spring architecture

Spring framework là một mã nguồn mở trên nền tẳng Java, thứ mà cung cấp các nền tảng toàn diện, hỗ trợ cho việc phát triển các ứng dụng Java một cách dễ dàng và nhanh chóng.

Spring framework được viết đầu tiên bởi Rod Johnson và được công bố lần đầu vào tháng 6 năm 2003 theo license Apache 2.0.

Bài viết này sẽ cung cấp cho các Java programmer để có thể hiểu cụ thể về kiến trúc Spring framework.

Spring được modul hóa, cho phép việc chọn và sử dụng cacsmodul thích hợp mà không quan tâm đến các phần khác. Bài viết này sẽ mô tả tất cả các modul hiện có trong Spring framework.

Về cơ bản, spring framework cung cấp khoảng 20 modules, những modules này có thể được sử dụng đựa trên yêu cấu của ứng dụng. Hình ảnh dưới đây mô phỏng là các modules cơ bản của spring framwrok:

spring_architecture.png

CORE CONTAINER:

Core container bao gồm 4 modules: Core, Bean, Context và Expression Leanguage (SpEL). Mô tả chi tiết về chúng như sau:

- Core module: module này- - - - ``` cung cấp các thành phần cơ bản của spring framework, bao gồm IoC và chức năng Dependency Injection.
- Bean module: module này cung cấp BeanFactory, là một sự triển khai phức tạp của Factory pattern.
- Context module: module này xây dựng trên một nền tảng vững chắc được cung cấp bởi Core và Bean module. Nó cũng là một môi trường để truy cập vào bất kì object nào được định nghĩa và configured. Interface Application context là thành phần quan trọng của Context module.
- SpEL module: module này cung cấp một dạng ngôn ngữ rất tiện ích cho việc query và thao tác các object tại thời điểm runtime.

DATA ACCESS/INTEGRATION:

Tầng Data Access/Integration bao gồm các modules: JDBC, ORM, OXM, JMS và Transaction. Mô tả chi tiết của chúng như dưới đây:
- JDBC module: module này cung cấp một lớp JDBC-abstraction thứ mà sẽ tránh việc coding nhàm chán liên quan đến database.
- ORM module: module này cung cấp một lớp abstraction thứ mà hỗ trợ việc thực hiện mapping Object/XML cho JAXB, CASTOR, XMLBeans, JiBX và XStream.
- JMS (java message service) module cung cấp các chức năng cho việc gửi và nhận message.
- Transaction module: module hỗ trợ lập trình và quản lí transaction.

WEB:

Web layer chứa đựng các modules: Web, Web-MVC, Web-Socket và Web-Portlet. Chi tiết về các modules này như sau:
- Web module cung cấp các chức năng tích hợp Web-oriented như là chức năng file-upload và khởi tạo IoC container thứ mà sử dụng servlet listener và context ứng dụng web-oriented.
- WWeb-MVC module chứa sự các thành phần Model-View-Controller cho 1 web application.
- Web-Portlet module cung cấp sự thực hiện MVC để sử dụng trong môi trường portlet và phản ảnh chức năng của module Web-Servlet.

CÁC THÀNH PHẦN QUAN TRỌNG KHÁC:

Có một vài module quan trọng khác như: AOP, Aspect, Instrumentation, Web và Test được giải thích như sau:

  • AOP module cung cấp phương thức lập trình aspect-oriented cho phép người lập trình định nghĩa các method-interceptor và phân chia các block code thực hiện các chức năng.
  • Aspect module cung cấp sự tích hợp với AspectJ hỗ trợ rất nhiều cho AOP.
  • Instrumentation module cung cấp các class hỗ trợ và loader để sử dụng trong ứng dụng nhất định.
  • Messaging module cung cấp việc hỗ trợ cho STOM như WebSocket sub-protool để sử dụng trọng ứng dụng. Nó cũng hỗ trợ cho việc lập tình sử dụng annotation cho việc routing và xử lí các message STOMP từ Websocket client.
  • Test module hỗ trợ việc test cho các thành phần Spring với Junit hoặc TestNG framework.