Thứ Tư, 24 tháng 8, 2016

Spring 3.0 Hello World sử dụng tool Eclipse

Spring 3.0 Hello World sử dụng tool Eclipse

 

Mục đích: chúng ta sẽ tìm hiểu khái niệm cơ bản về Spring Framework và viết ứng dụng Hello World với Spring.

 

Để thực hiện được bài demo này, các bạn cần những tool sau đây:

·        Eclipse IDE for J2EE Developer:

·        Apache Tomcat v6

·        Spring packages

·        Spring common libs.rar (antlr-runtime-3.0.jar, commons-logging-1.1.1.jar)

-------------------------------------------------------------Read more----------------------------------

Các bạn download Spring packages như sau:

 

 

 

 

 

 

 

 

Spring Framework là gì?

 

Bản chất framework là các gói thư viện đã implement một hoặc nhiều design pattern nào đó để giúp cho việc xây dựng các ứng dụng dễ dàng hơn và ít tốn effort hơn. Nói đơn giản thì framework giống như là phần móng và khung sườn của một ngôi nhà, nếu bạn sử dụng lại phần đó thì việc xây nhà thì sẽ hiệu quả hơn nhiều.

Spring là open-source framework được phát triển từ Java. Spring gồm những module chính sau đây:

 

 

·        IoC Container: Đây là phần quan trọng nhất và cũng là phần cơ bản, nền tảng của Spring. Nó giữ vai trò về cấu hình và quản lý lifecycle của các java object. Bài hôm nay chúng ta sẽ tìm hiểu về phần này.

·        DAO, ORM, AOP, WEB: Các module này là tool hoặc là framework có sẵn được tích hợp vào Spring.

 

Như vậy Spring đã implement design pattern nào và việc sử dụng Spring có ưu điểm gì?

 

Câu trả lời là design pattern Dependency Ịnjection dựa trên khái niệm Inversion of Control.

 

Inversion of Control & Dependency Ịnjection

 

Để hiểu khái niệm này chúng ta hãy thử tìm hiểu ví dụ sau đây.

Mình có class Customer như sau:

 

 

Vấn đề ở đây là:

·        Customer quản lý việc tạo instance của Address.

·        Customer bị phụ thuộc khá chặt chẽ vào Address, nghĩa là nếu như có thêm HomeAddress hoặc là OfficeAddress thì phải update lại class Customer và nếu như có vấn đề gì xảy ra khi khởi tạo object Address thì Customer cũng không được tạo.

 

Vấn đề trọng tâm ở việc Customer đang điều khiển “object creation” của address. Như vậy, chúng ta chỉ cần chuyển việc tạo instance Address của Customer cho bên thứ ba quản lý thì vấn đề sẽ được giải quyết, đúng với nghĩa của inversion of control – sự đảo ngược của việc điều khiển. Inversion of Control đưa ra khái niệm cơ bản như sau:  Nếu như class A quan hệ với class B,C,D,.. theo kiểu aggregation hoặc composition (A chứa B,C,D,..) thì A chỉ nên phụ thuộc vào abstraction (abstract class hoặc interface) của B, C, D.

IoC Container sẽ đóng vai trò là người quản lý control việc tạo object của cả Customer lẫn Address.

 

 

IoC Container tạo Customer và Address sau đó pass address vào customer thông qua setter. Việc IoC Container đang làm chính là "tiêm sự phụ thuộc" (Dependency Injection) vào Customer. Sự phụ thuộc ở đây nghĩa là sự phụ thuộc giữa các object : Customer và Address.

 

Tới đây ta đã xác định được rõ thế nào là IoC&DI. Hãy cùng làm ví dụ HelloWorld để hiểu rõ hơn.

 

_____________________________________________________________________________________

Spring – HelloWorld

 

Tạo Project:

 

1.      Khởi động Eclipse

2.      Chọn File à New à Project

3.      Chọn Java Project và click Next:

 

 

4.      Nhập tên cho Project là HelloWorld và click Finish.

 

Add jar files

 

1.      Click chuột phải vào project và chọn New à Folder. Nhập tên là lib:

 

 

2.      Add những file jar sau vào thư mục lib:

·        org.springframework.asm-3.0.6.RELEASE.jar

·        org.springframework.beans-3.0.6.RELEASE.jar

·        org.springframework.context.support-3.0.6.RELEASE.jar

·        org.springframework.context-3.0.6.RELEASE.jar

·        org.springframework.core-3.0.6.RELEASE.jar        

·        org.springframework.expression-3.0.6.RELEASE.jar

·        antlr-runtime-3.0.jar

·        commons-logging-1.1.1.jar

 

 

 

3.      Add jar files to build path.

Click chuột phải vào Project và chọn Build Path à Configure Build Path.

Click Add JAR à chọn các file jar vừa addà Giữ Ctr và click OK.

Click OK.

 

 

Tạo java object

 

1.      Click chuột phải vào Project và chọn New à Interface

Nhập interface name và package như hình bên dưới:

                       

 

 

 

2.      New class SpringHelloWorld để implements interface HelloWorld:

Nhập thông tin cho class như bên dưới:

 

 

 

Click Add và gõ vào HelloWorld đẻ lọc interface.

 

 

 

Chọn HelloWorld và click OK.

Click Finish.

Định nghĩa class như sau:

 

 

 

3.      Tạo class JavaHelloWorld cũng tương tự như SpringHelloWorld.

 

 

4.      Tạo class HelloWorldService như sau:

 

 

 

Configure Spring

 

1.      Click chuột phải vào Project, chọn New à Other à XML file.

Click Next.

 

 

2.      Nhập tên file là beans.xml và location cho file ở folder src:

 

 

Click Finish.

 

3.      Copy đoạn sau vào file xml và cấu hình như trong hình:

 

<beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

 

 

Tạo class HelloProgram như sau:

 

 

 

Click chuột phải, chọn Run As à Java Application

Đây là kết quả:

 

 

Chúng ta thay đổi lại cấu hình lại như sau:

 

 

Kết quả:

 

 

Quay lại file beans.xml:

·        <bean id="helloService" class="sample.hello.HelloWorldService">

              <property name="helloWorld" ref="javaHelloWorld"/>     

     </bean>

 

è Chúng ta khai báo bean có tên là helloService và có kiểu là sample.hello.HelloWorldService.

Khi load context, IoC container sẽ tạo object như thế này:

 

HelloWorldService helloService = new HelloWorldService();

 

Thực chất container sẽ tạo object HelloWorldService và binding object vừa tạo với tên là helloService. Tương tự:

 

<bean id="springHelloWorld" class="sample.hello.SpringHelloWorld">   

</bean>

è Tạo object SpringHelloWorld và binding với tên là springHelloWorld

 

<bean id="javaHelloWorld" class="sample.hello.JavaHelloWorld">  

  </bean>

è Tạo object JavaHelloWorld và binding với tên là javaHelloWorld

 

Giá trị của thuộc tính name của tag property phải là tên thuộc tính của class được khai báo trong tag bean. Ở đây helloService là tên thuộc tính của class HelloWorldService.

Vì property helloService reference đến bean javaHelloWorld

 

      <property name="helloWorld" ref="javaHelloWorld"/>

 

nên container sẽ tìm trong context xem có object nào được binding với tên javaHelloWorld  không, get object đó và set cho property helloWorld thông qua setter được khai báo trong class HelloWorldService.

 

Mình nghĩ tới đây, tất cả có vẻ đã rõ ràng ở mức cơ bản.

Chúc mừng các bạn đã hoàn thành xong HelloWorld với framework Spring!

Hẹn gặp lại ở các chủ đề sau.

1 nhận xét:

  1. Sao ở phần Configure Spring chỗ 3. đều cấu hình ref="javaHelloWorld" mà lần đầu in ra "Spring Hello World" còn lần sau thì "Java Hello World" vậy ạ?

    Trả lờiXóa