Thứ Bảy, 25 tháng 4, 2009

Java: Spring beginning (Review Project Part 2)

Bắt đầu với Spring
Spring là một java framework nguồn mở dùng ở tầng "bussiness layer" trong kiến trúc sau:

Nhiệm vụ của nó là tạo chỉ mục đến một "bean" trong tổng thể các "beans" đã định nghĩa trước đó. Để hiểu rõ ràng hơn thì bạn hãy tìm đọc các sách hoặc ebook về Spring, Spring in Action, ... Ở ví dụ step by step dưới đây chỉ phần nào thể hiện công cụng cơ bản của Spring.
Với IDE MyEclipse:
- Hãy tạo một project trống rỗng với tên DemoSpring
- Ở cửa sổ Package Explorer, right click vào "DemoString" -> MyEclipse -> Add Spring Capabilities, chọn Finish ở cửa sổ "Add Spring Capabilities"
Sau khi Finish, kết quả ở cửa sổ Package Explorer sẽ có thêm file applicationContext.xml (file này là file định nghĩa các bean) và Spring 2.5 reference library:
- Tới đây, ta tạm ngưng các hoạt động với Spring để định nghĩa các đối tượng, hành động ví dụ. Tạo các lớp như sau :
và codes:
------- DemoSpring.java --------------
import java.util.Scanner;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;


/**
* @author Hung.Trinh
*/
public class DemoSpring {

private static String CONFIG_FILE_LOCATION = "applicationContext.xml";
private static volatile BeanFactory beanFactory = null;

/**
* Copyright by tqhung at Apr 24, 2009 - 3:09:09 PM
* @param args
*/
public static void main(String[] args) {
System.out.println("Hello to Demo Using Spring with MyEclipse.");
Scanner sn = new Scanner(System.in);
String beanname = "";
getBeanFactory();
do {
try {
beanname = sn.next();
if (beanname.compareToIgnoreCase("exit") == 0) {
break;
}
IActionClass aclass = (IActionClass) beanFactory.getBean(beanname);
System.out.println(aclass.showMessage());
} catch (BeansException be) {
System.out.println("No bean found.");
} catch (Exception e) {
System.out.println(e.getMessage());
}
} while (true);

System.out.println("completed");
}

public static BeanFactory getBeanFactory() {
if (beanFactory == null) {
final ClassPathResource resource = new ClassPathResource(CONFIG_FILE_LOCATION);
beanFactory = new XmlBeanFactory(resource);
}
return beanFactory;
}
}
------- IActionClass.java --------------
/**
* @author Hung.Trinh
*/
public interface IActionClass {
String showMessage();
}
------- ActionClass1.java --------------
/**
* @author Hung.Trinh
*/
public class ActionClass1 implements IActionClass{

public String showMessage(){
return "In action 1 of class" + ActionClass1.class.toString();
}
}
------- ActionClass2.java --------------
/**
* @author Hung.Trinh
*/
public class ActionClass2 implements IActionClass{
public String showMessage(){
return "In action 2 of class" + ActionClass2.class.toString();
}
}
- Công đoạn kế tiếp là ta định nghĩa các bean cho Spring. Mở file applicationContext.xml:
-------- applicationContext.xml - Default ----------
[?xml version="1.0" encoding="UTF-8"?]
[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-2.5.xsd"]

[/beans]
Có 2 cách định nghĩa bean: định nghĩa bằng dòng lệnh và định nghĩa bằng giao diện. Định nghĩa bằng dòng lệnh theo cấu sẽ đơn giản hơn với người lập trình chuyên sâu. Ở đây coi như ta chưa biết gì, ta dùng giao diện vậy :D. Mở cửa sổ Spring Explorer (Window -> Show View -> Other.. -> Spring Explorer), right click lên "bean" chọn "New Bean"
Và định nghĩa "action1", "action2" tương ứng với 2 lớp ActionClass1 và ActionClass2 mới vừa được tạo:
Nên nhớ là sau mỗi lần tạo bean bạn đều phải thực hiện save file applicationContext.xml. Kết quả sau 2 lần tạo bean, nội dung file applicationContext.xml sẽ là:
--------- applicationContext.xml - Configured ----------
[?xml version="1.0" encoding="UTF-8"?]
[ơ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-2.5.xsd"]
[bean name="action1" class="ActionClass1" abstract="false"
lazy-init="default" autowire="default" dependency-check="default"]
[/bean]
[bean name="action2" class="ActionClass2" abstract="false"
lazy-init="default" autowire="default" dependency-check="default"]
[/bean]
[/beans]
nhưng thực tế cần thì ít hơn:
[?xml version="1.0" encoding="UTF-8"?]
[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-2.5.xsd"]
[bean name="action1" class="ActionClass1" /]
[bean name="action2" class="ActionClass2" /]
[/beans]
save lại 1 lần nữa cho chắc ăn :D,
Tới đây bạn có thể test kết quả vừa làm. Run DemoSpring java application, ở console, nhập chuỗi "action1" -> enter, "action2" -> enter sẽ thấy kết quả:
input : action1 --> output: In action 1 of classclass ActionClass1
input : action2 --> output: In action 2 of classclass ActionClass2
input : exit --> output: completed
Chúc thành công.

2 nhận xét:

  1. Woa, nay chơi Spring luôn hả anh :D

    Trả lờiXóa
  2. hihi, giờ chơi được trò gì chơi hết, sống phải chơi cho hết mừa :D!! bizinít okie ko D

    Trả lờiXóa