[Spring Framework 3] Hello World

เริ่มจากไหว้ครูก่อนหล่ะกัน Spring Framework ผมคงไม่สืบสาวถามหาอดีตว่าเป็นไงมาจากใหน เริ่มลงมือเขียนเลยดีกว่า

  1. ดาวโหลด

    1. Spring Framework จาก http://www.springsource.org/download
      ผมเลือก 3.0.6.RELEASE ( เวอร์ชันล่าสุด ณ วันที่ 27 กันยายน 54 )
    2. Commons Logging จาก http://commons.apache.org/logging/download_logging.cgi
      ผมเลือก commons-logging-1.1.1-bin.zip ( เวอร์ชันล่าสุด ณ วันที่ 27 กันยายน 54 )

  2. เปิด Eclipse แล้วสร้าง Java Project ขึ้นมา ผมตั้งชื่อโปรเจคว่า HelloSpring
    1 - create java project
  3. คลิกขวาที่ชื่อโปรเจคแล้วเลือก New -> Folder ตั้งชื่อว่า lib แล้วกด Finish
  4. แตกซิปไฟล์ตามข้อ 1) จากนั้นก็อปไฟล์
      จากโฟลเดอร์ spring-framework-3.0.6.RELEASE\dist

    • org.springframework.core-3.0.6.RELEASE.jar
    • org.springframework.beans-3.0.6.RELEASE.jar
      และไฟล์จากโฟลเดอร์ commons-logging-1.1.1
    • commons-logging-1.1.1.jar

    ทั้งสามไฟล์นี้ไปไว้ในโฟลเดอร์ lib ที่สร้างไว้ในข้อ 3)

  5. เลือกไฟล์ทั้งสามแล้วคลิกขวา เลือกเมนูตามภาพด้านล่าง
    2 - add to build path
  6. สร้างไฟล์ที่ใช้เก็บ config ของ Spring โดยคลิกขวาที่โฟลเดอร์ src แล้วเลือกเมนู New -> File แล้วตั้งชื่อไฟล์ตามที่ต้องการ ผมตั้งว่า HelloSpring.xml
    3 - create spring config file
    จากนั้นก็อปข้อความนี้ลงไฟล์ไฟล์ที่เพิ่งสร้าง ซึ่งเป็นสิ่งที่ Spring ต้องการ
  7. สร้าง package ขึ้นมาตามต้องการ ผมตั้งชื่อดังภาพ
    4 - create package
  8. สร้างคลาสขึ้นมา ผมตั้งว่า HelloSpring.java แล้วเก็บไว้ใน package ที่เพิ่งสร้าง
    5 - first spring bean
    โดยในคลาสมีเมธอด sayHello() เพื่อสั่ง println ข้อความ

    package com.test.hello.spring;
    
    public class HelloSpring {
    	public void sayHello(){
    		System.out.println("Hello Spring!!!");
    	}
    }
    
  9. กลับไปที่ไฟล์ HelloSpring.xml แล้วเพิ่มข้อความนี้เข้าไปในแท็ก

    จะได้ไฟล์หน้าตาดังนี้

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    	<bean id="HelloWorldBean" class="com.test.hello.spring.HelloSpring" />
    </beans>
    
    

    บรรทัดที่เพิ่มเข้ามา เป็นการประกาศให้ Spring ทราบว่า มีคลาสให้เรียกใช้คือคลาส HelloSpring โดยกำหนด id ให้เป็น HelloWorldBean

  10. สร้างคลาสชื่อ Main เพื่อใช้ทดสอบการเรียก Spring ขึ้นมาทำงาน
    6 - create main file
    สร้างเมธอด main() ดังนี้

    public static void main(String[] args) {
    		XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(
    				"HelloSpring.xml"));
    		HelloSpring myBean = (HelloSpring) beanFactory.getBean("HelloWorldBean");
    		myBean.sayHello();
    	}
    

    บรรทัดแรกใน main() คือสร้างตัวอ่านไฟล์ config ของ Spring
    บรรทัดที่สองคือเรียก คลาสที่เราประกาศไว้ในไฟล์ config ที่มี id เท่ากับ HelloWorldBean
    บรรทัดที่สามคือเรียกเมธอดในคลาส

  11. คลิกขวาที่คลาส Main แล้วเลือกเมนู Run As -> Java Application ควรจะได้ผลลัพท์ประมาณนี้

    Sep 27, 2011 5:30:10 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [HelloSpring.xml]
    Hello Spring!!!

จบแล้วครับ การบูชา Spring Core สังเกตว่า โค้ดในส่วนที่เรียกคลาสขึ้นมาทำงาน เราไม่ได้ใช้คำสั่ง new ซึ่งการทำงานในส่วนนี้ จะเป็นหน้าที่ของ Spring เป็นคนเรียกคลาสที่เรากำหนดไว้ในไฟล์ spring config

เพื่อทดสอบว่า Spring ทำการโหลดคลาสขึ้นมาจริง เราก็เพิ่มการทดสอบขึ้นมาดังนี้

  1. สร้างคลาสชื่อ HelloSpring2.java ขึ้นมา แล้วสืบทอดคลาส HelloSpring.java ดังภาพ
    7 - new bean
  2. ทำการ Override method sayHello()
    ** เทคนิคการใช้ Eclipse ให้ override ให้คือ พิมพ์ชื่อเมธอดแล้วกด Ctrl+Space แล้วเลือกดังภาพ
    8 - override sayHello
    ตัดส่วนเกินออก แล้วสั่ง println อันใหม่ ที่ไม่ซ้ำกับคลาสแม่ ก็จะได้หน้าตาดังนี้

    
    @Override
    	public void sayHello() {
    		System.out.println("Hello 2");
    	}
    
  3. แก้ไขไฟล์ HelloSpring.xml ให้เรียกคลาสใหม่ จะได้ดังนี้
  4. รันคลาส Main ผลลัพท์ที่ได้ควรเปลี่ยนใหม่ดังนี้

    Sep 27, 2011 5:42:59 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [HelloSpring.xml]
    Hello 2

จะเห็นได้ว่า เราไม่ได้ทำการ new คลาสใหม่ขึ้นเพื่อมาเรียกเมธอด sayHello ซึ่ง Spring จะเป็นคนจัดการเอง

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s