Tải bản đầy đủ (.docx) (16 trang)

BÁO CÁO MÔN HỌC CÔNG NGHỆ PHẦN MỀM đề tài spring framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (341.86 KB, 16 trang )

ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC
CÔNG NGHỆ PHẦN MỀM
Đề tài: Spring Framework

GIẢNG VIÊN PHỤ TRÁCH: PGS. TS Nguyễn Thanh Bình
LỚP HỌC PHẦN: 18.11
NHĨM 3
Nguyễn Tiến Dũng
Đặng Trung Ngun
Phan Thế Hịa
Nguyễn Lê Thiên Như

Đà Nẵng, tháng 02/2021


Báo cáo môn học Công nghệ phần mềm

MỤC LỤC
DANH MỤC HÌNH ẢNH
Hình 1. Logo của Spring
Hình 2. Dependency Injection
Hình 3. Minh họa Lập trình hướng khía cạnh
Hình 4. Các module của Spring
Hình 5. Cấu trúc Spring Boot
Hình 6. Luồng xử lí request trong Spring Boot
Hình 7. Cấu trúc Spring MVC
Hình 8. Luồng xử lý request trong Spring MVC



Nhóm 3 – Spring Framework

2


Báo cáo môn học Công nghệ phần mềm

GIỚI THIỆU CHUNG VỀ SPRING FRAMEWORK
1. Tổng quan
Spring là
framework mã nguồn
Phát
triển
bởi
Pivotal
Software
mở phổ biến
nhất để xây dựng các
ứng dụng doanh
nghiệp
(Java
Phát hành lần đầu
1/10/2002
Enterprise). Với
Spring, các nhà phát
triển có thể tạo Phiên bản hiện tại
ra các mã có hiệu suất
5.3.4
cao, dễ kiểm thử

và có thể sử dụng lại
Ngơn ngữ
Java
được. Các tính
năng core của Spring
Framework có
thể được sử dụng
Nền tảng
Java EE
trong việc phát
triển bất kỳ ứng dụng
Java hoặc xây dựng các ứng dụng web trên nền tảng Java EE (Java Enterprise Edition).
Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB;
trong suốt: hoạt động một cách trong suốt với lập trình viên)

Hình 1. Logo của Spring

2. Lịch sử ra đời
2.1. EJB và Spring
Có thể nói rằng Spring Framework ra đời là nhờ sự thành công của EJB. EJB
(Enterprise JavaBeans) là một kiến trúc phát triển dành cho các ứng dụng doanh
nghiệp địi hỏi tính mạnh mẽ và khả năng mở rộng cao. EJB là một thành phần quan
trọng của nền tảng Java EE. EJB được tạo ra bởi hai gã khổng lồ công nghệ là IBM và
Sun vào những năm cuối thập niên 90. Dưới sự phát triển của hai tập đoàn này, EJB đã
trở nên nặng nề hơn. Tiêu chuẩn EJB cũng nhanh chóng được thơng qua. Sau tất cả,
EJB được ca ngợi là giải pháp tốt nhất để xây dựng các ứng dụng phân tán dành cho
doanh nghiệp.
Nhưng rồi những chỉ trích về chi tiết kỹ thuật của EJB đã tăng nhanh cịn hơn sự
nổi tiếng của nó. EJB là một framework lớn với độ phức tạp cao. Các nhà phát triền
khi làm việc với EJB đã nhận ra rằng nó khơng hoạt động như những gì nó đã đề ra.

EJB chỉ tuyệt vời trên bàn giấy, nhưng ra thực tế đó lại là một chuyện khác.

Nhóm 3 – Spring Framework

3


Báo cáo môn học Công nghệ phần mềm
EJB vẫn được tiếp tục phát triển, dễ sử dụng hơn nhiều so với buổi ban đầu.
Nhưng những chỉ trích vẫn cịn đó, nỗi thất vọng trong cộng đồng Java ngày càng tăng
lên, địi hỏi cần có một giải pháp thay thế.
2.2. Sự ra đời của Spring
Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi Rod
Johnson. Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và dễ dàng hơn.
Rod Johnson đã cho xuất bản một cuốn sách được phổ biến rộng rãi có nhan đề "J2EE
Development without EJB". Điều này đã cho Spring Framework rất nhiều động lực để
thay thế EJB.
Theo đà phát triển đó, Spring đã trở thành framework mã nguồn mở phổ biến
nhất để xây dựng các ứng dụng doanh nghiệp. Cách tiếp cận thực tế ban đầu của Rod
Johnson tiếp tục được phát triển và hướng tới một bộ cơng cụ hồn chỉnh dành cho xây
dựng các ứng dụng doanh nghiệp. Theo một số nguồn, trên 50% các ứng dụng web
Java hiện nay đang sử dụng Spring.

CÁC KHÁI NIỆM ĐẶC TRƯNG
Spring Framework được phát triển dựa trên các quan điểm sau:

1

Đơn giản hóa cơng việc phát triển


o Thông qua việc sử dụng các đối tượng Java thuần túy, hay POJO (Plain Old Java
Object)
o Trong Java, POJO thường được dùng để chỉ những object Java bình thường, khơng
theo theo bất kỳ một mơ hình, quy ước, nào cả hay nói theo cách khác thì class của
những object này không implement hay extend class nào khác; chỉ bao gồm các thuộc
tính và các phương thức.

3. Nới lỏng ràng buộc giữa các thành phần thông qua Dependency Injection
3.1. Dependency
Dependency là một loại quan hệ giữa 2 class, trong đó một class hoạt động độc
lập và class cịn lại phụ thuộc vào class kia.
3.2. Dependency Injection
Dependency Injection (DI) là một kỹ thuật lập trình giúp tách một class độc lập
với các biến phụ thuộc.
3.2.1.
o
o
o

Nhiệm vụ của Dependency Injection

Tạo ra các object.
Biết được class nào cần những object đấy.
Cung cấp cho những class đó những object chúng cần.

Nhóm 3 – Spring Framework

4



Báo cáo môn học Công nghệ phần mềm
Bằng cách này, nếu trong tương lai object đó có sự thay đổi thì DI có nhiệm vụ
cấp lại những object cần thiết cho class.

Hình 2. Dependency Injection

3.2.2.

Ưu điểm

o Giúp viết Unit test dễ dàng hơn.
o Giảm thiểu đc boilerplate code vì việc khởi tạo dependency đc làm bởi một
component khác.
o Mở dụng dự án dễ dàng hơn.
o Giúp ích trong việc liên kết lỏng (loose coupling) giữa các thành phần trong dự
án.
3.2.3.

Nhược điểm

o Khá phức tạp để học và nếu dùng quá đà thì có thể dẫn tới một số vấn đề khác.
o Rất nhiều lỗi ở compile time có thể bị đẩy sang runtime.
o Có thể làm ảnh hưởng tới chức năng auto-complete hay Find references của
một số IDE

Nhóm 3 – Spring Framework

5



Báo cáo môn học Công nghệ phần mềm

4. Tiếp cận lập trình khai báo bằng cách sử dụng các quy tắc (convention) và
các khía cạnh (aspect) chung.
o Lập trình khai báo (declarative programming) là một mẫu hình lập trình theo phong
cách xây dựng cấu trúc và các yếu tố của chương trình máy tính để thể hiện tính logic
của sự tính tốn mà khơng mơ tả luồng điều khiển của nó.
o Coding conventions là tập hợp những nguyên tắc chung khi lập trình nhằm làm cho
code dễ đọc, dễ hiểu, do đó dễ quản lý, bảo trì hơn.
o Aspect Oriented Programming (AOP) – lập trình hướng khía cạnh: là một kỹ thuật
lập trình nhằm phân tách chương trình thành cách moudule riêng rẽ, phân biệt, không
phụ thuộc nhau.
o Khi hoạt động, chương trình sẽ kết hợp các module lại để thực hiện các chức năng
nhưng khi sửa đổi 1 chức năng thì chỉ cần sửa 1 module.
o AOP cho phép chúng ta thêm vào các ứng dụng đã tồn tại những đoạn code xử lý mới
mà không phải chỉnh sửa code của các ứng dụng này.
o AOP không phải dùng để thay thế OOP mà để bổ sung cho OOP.
 AOP khắc phục những hạn chế và tăng hiệu quả của OOP (Object Oriented

Programming). Trong khi OOP còn nhiều thiếu sót chẳng hạn như khó tạo ra
những ứng dụng khó, phức tạp thì AOP ra đời bổ sung cho OOP. Tuy vậy, AOP
không phải để thay thế hẳn OOP.
 Với AOP, khả năng tái sử dụng mã nguồn được tăng cường tối đa.
 Trong AOP, module nào làm việc của module đó, do vậy đảm bảo tính Đơn

nhiệm (Single responsibility principle), giải quyết cả vấn đề chéo mã nguồn
(code tangling) và dàn trải mã nguồn (code scattering). Do vậy, tính module hóa
cũng cao hơn các kiểu lập trình khác

Nhóm 3 – Spring Framework


6


Báo cáo mơn học Cơng nghệ phần mềm

Hình 3. Minh họa Lập trình hướng khía cạnh

5. Giảm thiểu các mã nghi thức và soạn sẵn (boilerplate)
o Sử dụng các template và các aspect

6. Thường được sử dụng khi phát triển hệ thống quy mơ lớn

CÁC MODULE CHÍNH CỦA SPRING FRAMEWORK
1. Core Container
Core container cung cấp chức năng cơ bản của Spring. Thành phần chính của nó
là Bean Factory, một cài đặt của Factory pattern. BeanFactory áp dụng IoC pattern để
đặc tả sự phụ thuộc từ code của ứng dụng.
2. Spring Context/Application Context
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. Cung cấp cách để truy cập các
đối tượng
3. Spring AOP (Aspect-Oriented)
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


Nhóm 3 – Spring Framework

7


Báo cáo môn học Công nghệ phần mềm
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 nơi và làm thế nào để liên hệ với aspect.
4. Spring DAO
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. Module này cũng cung cấp các dịch vụ quản lý giao dịch cho
các đối tượng trong ứng dụng Spring.
5. Spring ORM
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.
6. Spring Web module
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.
7. Spring MVC Framework
MVC Framework thì 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.
Ngoài những module chính của spring trên thì nó cịn một số module khác,dưới
đây là mơ hình đầy đủ 20 modules của spring framework cho một ứng dụng đầy đủ
các yêu cầu.


Nhóm 3 – Spring Framework

8


Báo cáo mơn học Cơng nghệ phần mềm

Hình 4. Các module của Spring

Nhóm 3 – Spring Framework

9


Báo cáo môn học Công nghệ phần mềm

ƯU ĐIỂM & NHƯỢC ĐIỂM
1. Ưu điểm
o Sử dụng POJO (Plain Old Java Object), giúp phát triển ứng dụng. Ngồi ra cịn giúp
loại bỏ EJB thông thường bằng cách để người dùng sử dụng servlet container như
Tomcat. Chính điều này khiến Spring Framework trở thành khung phần mềm nhẹ
o Tính linh hoạt để cấu hình Spring: Spring hỗ trợ sử dụng cả cấu hình XML lẫn Javabased annotations để cấu hình cho Spring Beans.
o Không cần Server: Spring framework cung cấp sức chứa nhẹ, điều này có thể kích
hoạt mà khơng cần sử dụng web server hay server của ứng dụng.\
o Sử dụng AOP Spring: Mô đun Spring AOP mang lại vài lợi ích cho người phát triển.
Nó cho phép họ có nhiều loại đơn vị biên dịch khác nhau hoặc trình tải lớp riêng biệt.
Đi cùng đó là việc sử dụng IoC để tiêm phụ thuộc để cho phép các khía cạnh của nó
được cấu hình bình thường.
o Khơng cần tái tạo lại: Một trong những lợi ích chính của Spring Framework đối với sự
phát triển ứng dụng doanh nghiệp là có thể tận dụng từ Spring. Spring sử dụng công

nghệ như JDK timers, ORM frameworks, JAVA EE… Vì thế nhà phát triển không cần
phải học hết các công nghệ hay frameworks để phát triển ứng dụng.
o Sử dụng tính Mơ đun: Spring Framework cung cấp tính mơ đun cho nhà phát triển.
Giúp họ chọn gói hoặc lớp thích hợp để sử dụng hoặc bỏ qua. Với hàng ngàn gói và
lớp, nó đến như một lợi ích cho nhà phát triển để xác định và chọn đúng loại mà không
gặp vấn đề.
o Dễ kiểm tra: Một trong những tính năng của Spring tiêm phụ thuộc giúp tăng cường
khả năng kiểm tra. Đơn giản hóa việc đưa dữ liệu thử nghiệm dùng JavaBean POJO.
o Tính nhất quán của quản lý giao dịch: Spring Framework có thể dễ dàng tăng hoặc
giảm quy mơ giao dịch lân cận cũng như toàn cầu bằng cách sử dụng JTA. ĐÓ là do
giao diện quản lý giao dịch đã nhất quán.
o Khung web được thiết kết tốt: Spring có sự thiết kế mơ hình MVC tốt để cung cấp giải
pháp thay thế tuyệt vời cho khuôn khổ web kế thừa.
o Kiểm soát đảo ngược và API’s: Spring Framework cung cấp sự đảo ngược kiểm soát
và APIs để dịch những ngoại lệ được ném ra bởi JDBC, Hibernate ném nó thành các
ngoại lệ khơng được kiểm tra và nhất quán.

2. Nhược điểm
o Sự phức tạp của Spring: Những lời chỉ trích chính mà Spring Framework nhận được là
nó q phức tạp và thiếu tập trung rõ rang vì nó có hơn 2400 lớp với 49 cơng cụ khác
khiến các nhà phát triển sử dụng nó rất phức tạp.

Nhóm 3 – Spring Framework

10


Báo cáo môn học Công nghệ phần mềm
o Đường cong học tập cao: Sẽ khó khăn cho người mới lập trình để học và sử dụng
Spring Framework. Là bởi vì các phương pháp lập trình mới và yêu cầu chi tiết của

mỗi phương pháp trong số chúng để phát triển trên ứng dụng.
o Nhiều cơ chế song song: Nhiều phương án lựa chọn đưa ra gây nhiễu loạn, khó hiểu.
Cần rất nhiều sự am hiểu từ phía nhà phát triển để biết phương thức nào hoặc lớp nào
là nên dùng trong những trường hợp cụ thể.
o Thiếu hướng dẫn, nguyên tắc: Khơng có nhiều ngun tắc, hướng dẫn trên các diễn
đàn, trang chủ cho người dùng trong dữ liệu của Spring.

MỘT SỐ DỰ ÁN SPRING
1. Spring Boot
Đưa ra quan điểm chính kiến về việc xây dựng các ứng dụng Spring và giúp bạn bắt
đầu và chạy nhanh nhất có thể.
2. Spring Data
Cung cấp một cách tiếp cận nhất quán để truy cập dữ liệu - quan hệ, không quan hệ,
giảm bản đồ và hơn thế nữa.
3. Spring Cloud
Cung cấp một bộ công cụ cho các mẫu phổ biến trong hệ thống phân tán. Hữu ích
cho việc xây dựng và triển khai microservices
4. Spring Security
Bảo vệ ứng dụng của bạn bằng hỗ trợ xác thực, ủy quyền tồn diện và có thể mở rộng
5. Spring Batch
Đơn giản hóa và tối ưu hóa cơng việc xử lý các hoạt động hàng loạt khối lượng lớn
6. Spring for Android
Cung cấp các thành phần Spring chính để sử dụng trong việc phát triển các ứng dụng
Android
7. Spring Web Services
Tạo điều kiện thuận lợi cho việc phát triển các dịch vụ web SOAP theo hợp đồng.
8. Spring Mobile
Đơn giản hóa sự phát triển của các ứng dụng web dành cho thiết bị di động thông qua
các tùy chọn phát hiện thiết bị và hiển thị liên tục.
9. Spring HATEOAS

Đơn giản hóa việc tạo các biểu diễn REST tuân theo nguyên tắc HATEOAS.

Nhóm 3 – Spring Framework

11


Báo cáo môn học Công nghệ phần mềm
10. Spring Statemachine
Cung cấp một framework cho các nhà phát triển ứng dụng sử dụng các ý tưởng máy
trạng thái với các ứng dụng Spring
Ngồi ra cịn có các dự án khác như: Spring CredHub, Spring Flo, Spring for Apache
Kafka, Spring LDAP, Spring AMQP, Spring Cloud Data Flow...

SPRING BOOT
Spring Boot thuộc trong nhóm module của Spring Framework, cung cấp tính năng
RAD (Rapid Application Development).
Spring Boot được sử dụng để tạo ra một ứng dụng độc lập dựa trên Spring mà bạn có
thể chạy.
Spring Boot khơng sinh ra code và tất nhiên hồn tồn khơng có u cầu cấu hình
XML nào, mà nó sử dụng quy ước về mơ hình thiết kế phần mềm theo cấu hình, có nghĩa
là nó giảm tải cơng việc cho các lập trình viên.

1. Đặc tính
o
o
o
o

Tạo các ứng dụng Spring độc lập.

Nhúng trực tiếp Tomcat, Jetty hoặc Undertow mà khơng cần triển khai các tệp WAR.
Nó tự động cấu hình Spring bất cứ khi nào có thể.
Nó cung cấp các tính năng sẵn sàng sản xuất như số liệu, kiểm tra sức khoẻ và cấu
hình bên ngồi

o Khơng tự sinh mã và khơng u cầu cấu hình XML

2. Cấu trúc Spring Boot
Spring Boot tuân theo một kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp
ngay bên dưới hoặc bên trên (cấu trúc phân cấp) nó.
o Presentation Layer xử lý các yêu cầu HTTP, dịch tham số JSON thành đối tượng và
xác thực yêu cầu và chuyển nó đến lớp nghiệp vụ. Nói tóm lại, nó bao gồm các
khung nhìn, tức là phần giao diện người dùng.
o Business Layer xử lý tất cả các logic nghiệp vụ. Nó bao gồm các lớp dịch vụ và sử
dụng các dịch vụ được cung cấp bởi các lớp truy cập dữ liệu. Nó cũng thực hiện ủy
quyền và xác nhận.
o Persistence Layer chứa tất cả logic lưu trữ và dịch các đối tượng nghiệp vụ từ và
sang các hàng cơ sở dữ liệu.
o Database Layer: các hoạt động CRUD (tạo, truy xuất, cập nhật, xóa) được thực hiện
trong lớp này.

Nhóm 3 – Spring Framework

12


Báo cáo mơn học Cơng nghệ phần mềm

Hình 5. Cấu trúc Spring Boot


3. Luồng xử lí request trong Spring Boot

Hình 6. Luồng xử lí request trong Spring Boot

o Có các lớp validator, lớp view và lớp utility
o Spring Boot sử dụng tất cả các module của Spring giống như Spring MVC,
Spring Data… Kiến trúc của Spring Boot cũng giống như kiến trúc của

Nhóm 3 – Spring Framework

13


Báo cáo môn học Công nghệ phần mềm

o
o
o
o
o

Spring MVC, ngoại trừ một điều: không cần các lớp DAO và DAOImpl
trong Spring boot.
Tạo một lớp truy cập dữ liệu và thực hiện hoạt động CRUD.
Máy khách thực hiện các yêu cầu HTTP (PUT hoặc GET).
Yêu cầu chuyển đến bộ điều khiển, bộ điều khiển ánh xạ đó yêu cầu và xử lý
nó. Sau đó, nó gọi logic dịch vụ nếu được yêu cầu.
Trong lớp dịch vụ, tất cả các logic nghiệp vụ thực hiện. Nó thực hiện logic
trên dữ liệu được ánh xạ tới JPA với các lớp mơ hình.
Một trang JSP được trả lại cho người dùng nếu khơng có lỗi xảy ra.


SPRING MVC
1. Spring MVC
o Spring MVC là 1 framework, hay nó là 1 dự án mã nguồn mở của Spring
o Spring MVC được thiết kế dành cho việc xây dựng các ứng dụng nền tảng web. Đây là
1 dự án chúng ta không thể bỏ qua khi xây dựng các ứng dụng javaweb
o Spring MVC cung cấp kiến trúc MVC (Model – View - Controller) và các component
được sử dụng để phát triển các ứng dụng web một cách linh hoạt, nhanh chóng và tiện
lợi hơn

2. Cấu trúc của Spring MVC

Nhóm 3 – Spring Framework

14


Báo cáo mơn học Cơng nghệ phần mềm

Hình 7. Cấu trúc Spring MVC

o DispatcherServlet: là lớp đứng ra quản lý toàn bộ hành động của framework (front
controller) trong suốt quá trình thực thi các lệnh thơng qua HTTP request
o HandlerMapping: chọn 1 dối tượng sẽ xử lý các request dựa trên các thuộc tính và điều
kiện của các request đó
o Model là nơi đóng gói dữ liệu ứng dụng, tương tác với database
o View là nơi hiển thị dữ liệu và tương tác trực tiếp với người dùng. Nhiệm vụ của các
thành phần trong View là trình bày các dữ liệu từ Model đến người dùng cuối
o Controller là nơi điều hướng những request từ phía người dùng, xây dựng dữ liệu,
chọn view và trả về kết quả cho người dùng


3. Luồng xử lý request trong Spring MVC

Nhóm 3 – Spring Framework

15


Báo cáo mơn học Cơng nghệ phần mềm

Hình 8. Luồng xử lý request trong Spring MVC

o DispatcherServlet nhận request, DispatcherServlet duyệt trong HandlerMapping và gọi
Controller thích hợp với request
o Controller xử lý request bằng cách gọi những phương thức dịch vụ thích hợp và sau đó
trả về 1 đối tượng ModelAndView cho DispatcherServlet. Đối tượng ModelAndView
này chứa dữ liệu trong đối tượng Model và tên của View
o DispatcherServlet gửi tên của View đến cho 1 ViewResolver, ViewResolver sẽ tìm
View thực sự cần dùng
o DispatcherServlet truyền đối tượng Model đến cho View để xác định và hiển thị kết
quả, View lấy dữ liệu trong đối tượng Model và hiển thị kết quả cho người dùng

ỨNG DỤNG CỦA SPRING
o Spring có thể được sử dụng để phát triển các ứng dụng Java Desktop, Mobile,
JavaWeb
o Spring được sử dụng nhiều trong các ứng dụng web và thương mại điện tử
o Có rất nhiều RESTful Web Service được tạo ra sử dụng Spring
o Một số trang web nổi tiếng được làm bằng Spring:
• linkedin.com
• aliexpress.com

• aws.amazon.com

Nhóm 3 – Spring Framework

16



×