1. Tìm hiểu về Spring
framework
Thành viên:
- Võ Việt Cường
- Nguyễn Hữu Phước
- Trần Trung Nguyên
- Lâm Thanh Duy
- Bùi Nguyên Đức
2. http://blogcongdong.com
NỘI DUNG BAO GỒM:
Tổng quan về Spring framework
1
Thuận lợi của Spring framework
2
Các module trong Spring framework
3
Inversion of Control (IoC) và Dependency Injection (DI)
4
Spring MVC
5
Demo ví dụ
6
3. - Spring framework, hay ngắn hơn là Spring,
là một cấu trúc dùng để xây dựng chương
trình ứng dụng mã nguồn mở dành cho ngôn
ngữ lập trình Java.
- Spring là framework phát triển ứng dụng phổ
biến nhất dành cho Java Enterprise. Ban
đầu nó được viết bởi Rod Johnson và lần
đầu tiên được phát hành theo giấy phép
Apache 2.0 vào tháng 6 năm 2003.
a) Spring là gì?
4. - Spring có kích thước nhẹ và trong suốt. (kích
thước nhẹ: kích thước nhỏ, phiên bản cơ bản
của Spring framework có kích thước khoảng
2MB ; trong suốt: hoạt động ngầm trong suốt
quá trình làm việc với lập trình viên)
a) Spring là gì?
5. - Những tính năng core (cốt lõi) của Spring có
thể được sử dụng để phát triển Java
Desktop, ứng dụng mobile, Java Web.
- Bên cạnh đó, phần mở rộng được sử dụng
để xây dựng các ứng dụng web trên nền
tảng Java EE.
- Mục tiêu chính của Spring là giúp phát triển
các ứng dụng J2EE một cách dễ dàng hơn
dựa trên mô hình sử dụng POJO (Plain Old
Java Object)
a) Spring là gì?
8. Spring framework cung cấp các mẫu cho các
công nghệ JDBC, Hibernate, JPA, v.v. Vì
vậy, không cần phải viết quá nhiều mã. Nó
ẩn các bước cơ bản của các công nghệ này.
a) Predefined Templates
9. Làm giảm đi sự phụ thuộc giữa các
components khác nhau của ứng dụng.
Spring IoC container làm nhiệm vụ khởi tạo
resources hoặc khởi tạo beans, sau đó “tiêm
– inject” chúng theo sự phụ thuộc khác nhau.
b) Loose Coupling
10. Dependency Injection (DI) giúp kiểm tra ứng
dụng dễ dàng hơn. Ứng dụng EJB hoặc
Struts yêu cầu máy chủ chạy ứng dụng
nhưng Spring framework không yêu cầu máy
chủ.
c) Easy to test
11. Spring framework rất nhẹ vì sự triển khai
POJO “plain old Java object" của nó. Spring
Framework không buộc lập trình viên kế
thừa bất kỳ lớp nào hoặc thực hiện bất kỳ
giao diện nào. Đó là lý do tại sao nó được
nói là không xâm lấn.
d) Lightweigh
12. tính năng Dependency Injection (DI) của
Spring Framework hỗ trợ các khung khác
nhau giúp cho việc phát triển ứng dụng
JavaEE dễ dàng.
e) Fast Development
13. Nó cung cấp sự trừu tượng hóa mạnh mẽ cho
các thông số kỹ thuật của JavaEE như JMS,
JDBC, JPA và JTA.
f) Powerful abstraction
15. Dependency Injection (DI)
- Khi nói tới DI, tức là nói tới Depedency Injection.
Hiện nay, một số DI container như Unity,
StructureMap v…v, hỗ trợ chúng ta trong việc cài
đặt và áp dụng Dependency Injection vào code,
tuy nhiên vẫn có thể gọi chúng là IoC Container,
ý nghĩa tương tự nhau.
16. Dependency Injection (DI)
Có thể hiểu Dependency Injection một cách đơn
giản như sau:
- Các class không giao tiếp trực tiếp với nhau, mà
thông qua interface. Class con sẽ implement
interface, class cha sẽ gọi class con thông qua
interface.
- Việc khởi tạo các class con sẽ do DI Container thực
hiện.
- Việc class nào gắn với interface nào sẽ được config
trong code hoặc trong file XML.
- DI được dùng để làm giảm sự phụ thuộc giữa các
class, dễ dàng hơn trong việc thay đổi class, bảo trì
code và testing
17. - Inversion of Control có thể được hiểu là một
nguyên lý thiết kế trong công nghệ phần mềm.
- Kiến trúc phần mềm được được áp dụng thiết
kế này sẽ đảo ngược quyền điều khiển so với
kiểu lập trình hướng thủ tục.
- Trong lập trình hướng thủ tục, các đoạn mã
được thêm vào sẽ gọi các thư viện nhưng với
IoC thì những IoC container sẽ sẽ chích những
dependencies vào khi nó khởi tạo bean
Inversion of Control (IoC)
18.
19. - Core package là phần cơ bản nhất của Spring,
cung cấp những đặc tính như IoC (Inversion of
Control) và DI (Dependency Injection).
- Khái niệm cơ bản là BeanFactory, một cài đặt
của Factory pattern, cho phép “móc nối” sự phụ
thuộc giữa các đối tượng trong file cấu hình.
a) Spring Core
20. - Spring context là một file cấu hình để cung cấp
thông tin ngữ cảnh của Spring.
- Spring context cung cấp các service như JNDI
access, EJB integration, e-mail, internalization,
validation, và scheduling functionality.
b) Spring Context
21. - 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ó.
- Nó 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.
c) Spring AOP (Aspect – Oriented Programming)
22. - Tầng JDBC và DAO đưa ra một cây phân cấp
exception để quản lý kết nối đến database,
điều khiển exception và thông báo lỗi được
ném bởi vendor của database.
- Tầng exception đơn giản điều khiển lỗi và
giảm khối lượng code mà chúng ta cần viết như
mở và đóng kết nối.
d) Spring DAO (Data Access Object)
23. Spring có thể tích hợp với một vài ORM framework
để cung cấp Object Relation tool bao gồm: JDO,
Hibernate, OJB và iBatis SQL Maps.
e) Spring ORM (Object Relational Mapping)
24. - Nằm trên application context module, cung cấp
context cho các ứng dụng web.
- 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.
f) Spring Web
25. - MVC Framework cài đặt đầy đủ đặc tính của
MVC pattern để xây dựng các ứng dụng Web.
- MVC framework thì cấu hình thông qua giao
diện và chứa được một số kỹ thuật view bao
gồm: JSP, Velocity, Tiles và generation of PDF
và Excel file.
g) Spring MVC
26. - Spring MVC là một module con trong Spring
framework, cung cấp kiến trúc Model-View-
Controller và các components sẵn có để sử
dụng và phát triển ứng dụng web một cách linh
hoạt.
- Mô hình MVC là kết quả của việc tách các
khía cạnh khác nhau của ứng dụng (logic đầu
vào, các xử lý logic, UI) trong khi đó cung cấp
một sự kết hợp giữa các thành phần đó một
cách “lỏng lẻo”.
a) Tổng quan về Spring MVC
27. - Model: đóng gói dữ liệu ứng dụng và bao gồm
các POJO.
- View: Chịu trách nhiệm nhận giá trị của
model và vẽ ra trang HTML mà trình duyệt có
thể hiển thị được.
- Controller: Chịu trách nhiệm nhận và xử lý
các yêu cầu từ người dùng và tạo các model
phù hợp và trả về cho view.
a) Tổng quan về Spring MVC
28. - DispathcherServlet là thành phần tiếp nhận tất
cả các request từ browser, điều khiển luồng xử lý
và trung chuyển giữa các thành phần
(components) trong MVC.
b) DispathcherServlet
29. - DispatcherServlet thực sự là một Servlet (nó
thừa kế từ lớp cơ sở HttpServlet), và được khai
báo trong tập tin web.xml của ứng dụng web.
Các requests muốn DispatcherServlet xử lý sẽ
phải được ánh xạ bằng cách sử dụng một bộ
ánh xạ URL trong cùng một tập tin web.xml.
Dưới đây là ví dụ về khai báo và định nghĩa
DispatcherServlet.
b) DispathcherServlet
32. c) Handler Mapping
- Sử dụng Handler Mapping để có thể ánh xạ
từng requests đến các handler thích hợp. Các
chức năng cơ bản của một HandlerMapping là
đưa ra một Handler Execution Chain (chuỗi
hành động), và có thể chứa một số bộ chặn.
- Khi requests đến, các DispatcherServlet sẽ
trao cho các HandlerMapping để nó kiểm tra
và xuất ra HandlerExecutionChain thích hợp.
Sau đó, các DispatcherServlet sẽ gọi handler
và bộ chặn trong hệ thống (nếu có).
34. e) View Resolver
-Views trong Spring được gán “view name”
và được phân giải bởi ViewResolver.
35. e) View Resolver
Sau đây là các ViewResolver trong Spring:
BeanNameViewResolver
FreeMarkerViewResolver
InternalResourceViewResolver
JasperReportsViewResolver
ResourceBundleViewResolver
UrlBasedViewResolver
VelocityLayoutViewResolver
VelocityViewResolver
XmlViewResolver
XsltViewResolver
36. e) View Resolver
Ở đây xin trình bày Internal Resource View Resolver vì nó
thường được sử dụng nhiều nhất. View Resolver này sẽ ánh
xạ Logical name của Resource
Chúng ta có controllers như sau
38. e) View Resolver
Chúng ta cần phải khai báo một Internal Resource View
Resolver trong file web.xml như sau:
Khi đó nếu như request mapping có value = “/hello”, thì view
“hello.jsp” trong thư mục /WEB-INF/views sẽ được hiển thị.