15
Hướng dẫn sử dụng Framework Spring 2.5 Version 1.0

Huong Dan Su Dung Spring Framework

Embed Size (px)

Citation preview

Page 1: Huong Dan Su Dung Spring Framework

Hướng dẫn sử dụng Framework Spring 2.5Version 1.0

Page 2: Huong Dan Su Dung Spring Framework

Revision History

Date Version Description Author

Thứ năm, Ngày 04/12/2008 1.0 - Khởi tạo

- Viết hướng dẫn sử dụng

Lê Diệp Oanh

document.doc Nguyen Anh Kien Page 2 of 12

Page 3: Huong Dan Su Dung Spring Framework

Table of Contents

1. Overview 4

1.1 Khái niệm về Spring 41.2 Những đặc tính của Spring 4

1.2.1 Transaction Management: 41.2.2 JDBC Exception Handling 41.2.3 Sự kết hợp của Hibernate, JDO, and iBATIS 41.2.4 AOP Framework 41.2.5 MVC Framework 4

1.3 Cấu trúc của Spring 41.4 2 đặc trưng của Spring 51.5 2 Container mà Spring cung cấp 61.6 Prepare 7

2. Xây dựng 1 ứng dụng đơn giản về Spring: (Deskop application) 7

3. Xây dựng 1 ứng dụng đơn giản về Spring: (Ứng dụng web: Servlet) 10

4. Src code 12

5. Tài liệu tham khảo 12

document.doc Nguyen Anh Kien Page 3 of 12

Page 4: Huong Dan Su Dung Spring Framework

1. Overview

1.1 Khái niệm về Spring

Là 1 light-weight framework mã nguồn mở.

1.2 Những đặc tính của Spring

1.2.1 Transaction Management:

Spring cung cấp 1 tầng trừu tượng chung cho việc quản lý transaction. Nó hỗ trợ cho các nhà developer có thể add thêm vào các bộ quản lý transaction, và tạo sự dễ dàng hơn trong việc phân ranh giới giữa các transaction mà không cần phải phân những giải pháp ở mức thấp hơn. Transaction của Spring kô gắn chặt với môi trường J2EE

1.2.2 JDBC Exception Handling

1.2.3 Sự kết hợp của Hibernate, JDO, and iBATIS

1.2.4 AOP Framework

1.2.5 MVC Framework

1.3 Cấu trúc của Spring

Spring được tổ chức tốt với 7 module như sau:1. Spring AOP: Đây là 1 thành phẩn chính trong Spring (AOP framework). Nhiệm vụ của

module này như sau:a. Cung cấp việc khai báo các service enterprise, và đặc biệt quan trọng là việc khai báo

transaction management.b. OOP

2. Spring ORM: Đây là 1 package có liên hệ mật thiết với việc truy xuất DB. Nó cung cấp những tầng tích hợp cho việc ánh xạ: như JDO, Hibernate và iBatis

3. Spring Web: Là 1 phần của Spring Web application development, bao gồm MVC4. Spring DAO: Chuẩn truy xuất data sử dụng các công nghệ như JDBC, Hibernate hay JDO5. Spring Context: Xây dựng dựa trên các bean package6. Spring Web MVC: Module cung cấp sự thực thi MVC cho ứng dụng web7. Spring Core: Chứa những thành phần chính của Spring.Sau đây là hình vẽ cấu trúc của Spring:

document.doc Nguyen Anh Kien Page 4 of 12

Page 5: Huong Dan Su Dung Spring Framework

1.4 2 đặc trưng của Spring

Inversion of Control và Aspect Oriented Programming. Chúng ta sẽ không liên kết với các thành phần và service 1 cách trực tiếp mà sẽ khai báo các service này bởi các thành phần trong file cấu hình. Container sẽ có nhiệm vụ móc nối chúng với nhau.

a. IoC: Gồm 2 loại chính sau:i. Dependency lookup: Container cung cấp các callbacks đến các

component và lookup context. Những đối tượng được quản lý sẽ được trả về sau quá trình lookup. Container bao gồm các phương thức callbacks để tìm kiếm các resource.

ii. Dependency injection: Các đối tượng của ứng dụng không chịu trách nhiệm tìm kiếm các resource mà chúng phụ thuộc. Và vì thế nên sự phụ thuộc được đảo ngược vào trong các đối tượng. Có 2 cách để object được phổ biến: Setter Injection (Thiết lập thuộc tính của bean thông qua các phương thức get/set) và Constructor Injection (Thiết lập thuộc tính của bean thông qua các đối số truyền vào phương thức Constructor)Ví dụ:+ Setter Injection:Object:

View (JSP):

+ Constructor Injection:

document.doc Nguyen Anh Kien Page 5 of 12

Page 6: Huong Dan Su Dung Spring Framework

Object:

View (JSP):

b. Aspect Oriented Programming: Kỹ thuật lập trình đưa ra cách phân chia các yêu cầu của hệ thống. Hệ thống được phân ra thành một vài component đảm trách một chức năng xác định. Bên cạnh các chức năng cơ bản thì các dịch vụ (yêu cầu hệ thống) như logging, transaction management, security...phải có trong chương trình. Các dịch vụ hệ thống này được gọi là 'cross-cutting concern' - nghĩa là chúng cắt chéo qua nhiều component trong hệ thống. AOP có khả năng module hóa các service này và sau đó cung cấp đến các component và chúng ta có thể tập trung vào yêu cầu chính (core concern). Trong Spring, lát cắt (aspect) được cắm vào trong các đối tượng của XML file như các JavaBean. Tiến trình này gọi là sự đan xen (weaving).

1.5 2 Container mà Spring cung cấp

a. BeanFactory: Là 1 container đơn giản nhất, hỗ trợ IoC loại Dependency Injection. Nó có nhiệm vụ tạo ra và loại bỏ các bean. Có nhiều implement của BeanFactory nhưng hay dùng nhất là XmlBeanFactory: Load các bean dựa trên định nghĩa trong file xml. Cách sử dụng như sau:

BeanFactory beanFactory = new XmlBeanFactory(new FileInputStream ("beans.xml") );

Câu lệnh trên chỉ bảo Container hãy đọc các định nghĩa của bean chứ chưa tạo ra instance cho các bean, chỉ khi sử dụng câu lệnh sau, lúc đó Container mới tạo ra 1 instance cho bean:

PersonBean bean01 = (PersonBean)beanFactory.getBean(“PersonBean”);

b. ApplicationContext: Cung cấp các service framework cho ứng dụng. Cũng giống như BeanFactory, nó cũng cung cấp việc đọc định nghĩa bean, tạo ra bean và hủy bean, ngoài ra nó còn cung cấp 3 tính năng khác:

i. 1 phương tiện để phân tích các text message bao gồm cả việc hỗ trợ việc quốc tế hóa.

ii. 1 cách chung để load các file resource.iii. Báo đến bean các event mà bean đã đăng ký listen

Vì các tính năng thêm vào của ApplicationContext mà nó thường được sử dụng hơn BeanFactory. BeanFactory chỉ được dùng trong mobile.3 implement của ApplicationContext hay thường được sử dụng:

document.doc Nguyen Anh Kien Page 6 of 12

Page 7: Huong Dan Su Dung Spring Framework

i. ClassPathXmlApplicationContext: Nó load context được định nghĩa trong file XML đặt trong classpath. Cấu trúc câu lệnh như sau:

ApplicationContext context = new ClassPathXmlApplicationContext ("bean.xml");

ii. FileSystemXmlApplicationContext: Nó load context được định nghĩa trong file XML đặt trong file system. trúc câu lệnh như sau:

ApplicationContext context = new FileSystemXmlApplicationContext ("bean.xml");

iii. XmlWebApplicationContext: Nó load context được định nghĩa trong file XML trong ứng dụng web.

1.6 Prepare

Cần 2 thư viện sau:- Spring.jar: [lib\jar files\ Spring jar\ spring.jar]- commons-logging-1.1.1.jar: [lib\jar files\ Spring jar\ commons-logging-1.1.1.jar]Có thể tìm thấy thư viện spring.jar trong http://www.springframework.org/download

2. Xây dựng 1 ứng dụng đơn giản về Spring: (Deskop application)B1: Tạo 1 project tên SpringDesktopApplication bằng cách New java project (Click menu File/New/Java Project)

B2: Tạo 1 folder lib trong project SpringDesktopApplication:

B3: Copy 2 thư mục jar sau vào lib: commons-logging-1.1.1.jar và spring.jar (Các jar này để trong thư mục /framework/lib)

B4: Add 2 thư viện này vào classpath: (ALT + Enter trên Project SpringDesktopApplication để mở properties của project, sau đó chọn Java Build Path và click vào tab Libraries, sau đó Click vào button Add JARs, chọn 2 jar trên)

document.doc Nguyen Anh Kien Page 7 of 12

Page 8: Huong Dan Su Dung Spring Framework

B5: Tạo 1 interface PersonBean chứa 1 phương thức sayHello()

B6: Tạo 1 Class implement interface trên: PersonBeanImpl:

B7: Tạo 1 file xml để tạo ra 1 instance của PersonBean này:

document.doc Nguyen Anh Kien Page 8 of 12

Page 9: Huong Dan Su Dung Spring Framework

B8: Tạo 1client gọi function sayHello()

B9: Chaỵ chương trình, Run as/ Java Application: Kết quả màn hình như sau:

Giải thích:Lưu ý: Src code của chương trình để trong thư mục [src code\SpringDesktopApplication\]

Khi làm việc với Spring, ta cần phải xây dựng các file sau:

document.doc Nguyen Anh Kien Page 9 of 12

Page 10: Huong Dan Su Dung Spring Framework

1. Interface chứa các phương thức sẽ được gọi2. Class implement các interface trên3. File xml để khai báo các bean (interface trên)4. Class client để sử dụng các phương thức được cung cấp ở Interface

Vậy luồng đi của chương trình như thế nào?:1. Ta khởi tạo 1 Container bean factory (Đã hướng dẫn ở trên) để đọc các định nghĩa về

các bean trong file xml được chỉ định2. Ta bảo với Container rằng hãy tìm và tạo ra 1 instance của thằng bean với tên bean01

trong đồng bean đã tìm được ở trên. Và nếu có, ta sẽ sử dụng phương thức sayHello() của bean01 này để in ra lời chào.Nhận thấy rằng tự bản thân Container có nhiệm vụ tìm và tạo instance cho ta, ta không phải viết code để tạo trực tiếp nó (Đặc trưng IoC: Dependency Injection)

3. Xây dựng 1 ứng dụng đơn giản về Spring: (Ứng dụng web: Servlet)B1: Tạo 1 project tên SpringTest bằng cách New Dynamic Web project (Click menu File/New/Dynamic Web Project)

B2: Copy 3 thư mục jar sau vào lib: commons-logging-1.1.1.jar, spring.jar và servlet-api.jar (Các jar này để trong thư mục /framework/lib)

B3: Tạo 1 interface PersonBean chứa 1 phương thức sayHello()

document.doc Nguyen Anh Kien Page 10 of 12

Page 11: Huong Dan Su Dung Spring Framework

B4: Tạo 1 Class implement interface trên: PersonBeanImpl:

B5: Tạo 1 file xml để tạo ra 1 instance của PersonBean này:

B6: Tạo servlet gọi function sayHello()

document.doc Nguyen Anh Kien Page 11 of 12

Page 12: Huong Dan Su Dung Spring Framework

B7: Tạo 1 file jsp để gọi đến action sayHello:

Chạy và view kết quả

4. Src codeĐặt trong thư mục: Src code\Spring\

5. Tài liệu tham khảohttp://www.roseindia.net/spring/index.shtmlhttp://www.roseindia.net/spring/spring-framework-install.shtmlhttp://www.javavietnam.org/javavn/cms/vi/java_tutorials/SPRING_TUTORIAL.htmlhttp://vi.wikipedia.org/wiki/Spring_Framework

document.doc Nguyen Anh Kien Page 12 of 12