Kiến trúc và các module của Spring
Spring
được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứng dụng mà
ta dùng một trong các module đó.
Dưới
đây là kiến trúc tổng thể của Spring Framework.
Test
Tầng
này cung cấp khả năng hỗ trợ kiểm thử với JUnit và TestNG.
Spring
Core Container
Bao
gồm các module spring core, beans, context và EL (Expression Languate)
- Spring Bean cung
cấp tính năng IoC (Inversion of Control) và DI (Dependency Injection). Spring
Bean là trung tâm của Spring Core và là trái tim của một ứng dụng Spring. Trái
ngược với EJB, Spring Framework được thiết kế từ lõi bằng cách sử dụng các POJO
hay các Spring Bean. Spring Bean có thể được hiểu là các đối tượng Java đơn giản.
Điều này khá tương đồng với nguyên lý thiết kế đơn trách nhiệm (Single
Responsibility) của Robert C Martin trong lập trình hướng đối tượng.
- Spring Context hỗ
trợ đa ngôn ngữ (internationalization), các tính năng Java EE như EJB, JMX.
- Spring Expression
Language được mở rộng từ Expresion Language trong JSP. Nó cung cấp hỗ trợ việc
setting/getting giá trị, các method cải tiến cho phép truy cập collections,
index, các toán tử logic v.v.
AOP,
Aspects, Instrumentation và Messaging
Những
module này hỗ trợ cài đặt lập trình hướng khía cạnh (Aspect Oriented
Programming), hỗ trợ tích hợp với AspectJ.
Spring
AOP module tích hợp chức năng lập trình hướng khía cạnh vào Spring
framework thông qua cấu hình của nó. Spring AOP module cung cấp các dịch
vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử
dụng Spring. Với Spring AOP chúng ta có thể tích hợp declarative
transaction management vào trong ứng dụng mà không cần dựa vào EJB
component.
Spring
AOP module cũng đưa lập trình metadata vào trong Spring. Sử dụng cái này
chúng ta có thể thêm annotation vào source code để hướng dẫn Spring và làm
thế nào để thực hiện các phương thức sự kiện đã được cài đặt sẵn.
Data
Access / Integration
Nhóm
này bao gồm JDBC, ORM, OXM, JMS và module Transaction. Những module này cung cấp
khả năng giao tiếp với cơ sở dữ liệu.
- Spring
ORM (Object Relational Mapping)
- ORM package cung cấp tầng tích hợp với
object-relational mapping API bao gồm: JDO, Hibernate, iBatis. Sử dụng ORM
package bạn có thể sử dụng tất cả các object-relational mapping đó kết hợp
với tất cả các đặc tính của Spring như declarative transaction
management.
Web
Hay còn gọi là Spring MVC nhóm này gồm Web, Web-Servlet… hỗ trợ việc tạo ứng
dụng web.
Spring Web cung cấp đặc tính của web như: chức năng file-upload,
khởi tạo IoC container sử dụng trình lắng nghe serlvet và web-oriented
application context.
Nằm trên application context module, cung cấp context cho các ứng dụng
web. Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork. Web module
cũng làm giảm bớt các công việc điều khiển nhiều request và gắn các
tham số của request vào các đối tượng domain.
Các lợi ích của Spring Framework
- Spring cho phép lập trình viên
sử dụng POJOs. Việc sử dụng POJOs giúp bạn không phải làm việc với EJB, ứng
dụng, các luồng chạy, cấu hình… đơn giản hơn rất nhiều.
- Spring được tổ chức theo kiểu
mô đun. Số lượng các gói và các lớp khá nhiều, nhưng bạn chỉ cần quan tâm đến
những gì bạn cần và không cần quan tâm đến phần còn lại.
- Spring hỗ trợ sử dụng khá nhiều
công nghệ như ORM Framework, các logging framework, JEE, các thư viện tạo
lịch trình (Quartz và JDK timer)…
- Module Web của Spring được
thiết kế theo mô hình MVC nên nó cung cấp đầy đủ các tính năng giúp thay thế
các web framework khác như Struts.
Đăng nhận xét