Spring學習(六)實例演示Spring的使用

本次我們要編寫一個輸出問候信息的小例子:
當一個人在中國的時候,使用中國話向大家問好。當他去國外旅遊時就需要用英語向大家問好。

首先我們得了解創建一個基於Spring IOC的小程序的具體步驟如下:
1)    建立Spring工程
2)    編寫Java文件
3)    編寫配置文件
4)    運行示例工程

新建一個Spring工程可以參考我之前的 Spring學習(一)在IntelliJ IDEA上使用Maven創建Spring項目

接下來我們來分析下這個例子當中的java類之間的關係:

這個項目可以簡單的理解爲:
一個人,在中國時用中國話問候大家;當去國外旅遊的時候,用英語問候大家
人的具體位置,是由Spring的配置環境來決定的:
當配置爲中國時,則問候“大家好!”
當配置爲國外時,則問候“Hello everybody!”


在這裏,我們在工程中逐個建立Java文件:

IHelloMessage:一個接口,用於定義輸出問候信息

public interface IHelloMessage {
    public String sayHello();
}
HelloWorld:接口的實現類,向用戶輸出“Hello everybody”信息
public class HelloWorld implements IHelloMessage{

    public String sayHello() {
        return "Hello Everybody";
    }
}
HelloChina:接口的實現類,向用戶輸出“大家好!”信息
public class HelloChina implements IHelloMessage{

    public String sayHello() {
        return "大家好!";
    }
}
Person:一個人物類,調用IHelloMessage接口,向用戶輸出問候信息

public class Person {
    //因爲Person類要引用IHelloMessage接口,所以將IHelloMessage作爲類的一個屬性
    private IHelloMessage iHelloMessage;

    /**
     * 自動生成get方法
     * @return
     */
    public IHelloMessage getiHelloMessage() {
        return iHelloMessage;
    }

    /**
     * 自動生成set方法
     * @param iHelloMessage
     */
    public void setiHelloMessage(IHelloMessage iHelloMessage) {
        this.iHelloMessage = iHelloMessage;
    }


    /**
     * person類使用sayHello方法來調用藉口的sayHello方法
     * @return
     */
    public String sayHello(){
        return this.iHelloMessage.sayHello();
    }
}

Main:程序的入口類,用於加載配置文件以及啓動IOC容器,調用人物類,向用戶輸出問候信息
注:Spring3.1之後已經廢棄XmlBeanFactory,替換方式如下所示
public class Main {
    public static void main(String[] args){
        //使用FileSystemResource來讀取配置文件
        Resource r=new FileSystemResource("helloMessage.xml");
        //使用XmlBeanFactory加載配置信息,啓動IOC容器
        //Spring3.1之後已經廢棄XmlBeanFactory
        //BeanFactory b=new XmlBeanFactory(r);
        DefaultListableBeanFactory factory=new DefaultListableBeanFactory();
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory);
        reader.loadBeanDefinitions(r);
        //從IOC容器中獲取Person類的實例
        //Person person=(Person)b.getBean("Person");
        Person person= (Person) factory.getBean("Person");
        //使用person類示例來輸出問候信息
        String s=person.sayHello();
        System.out.println("The Person is currently saying "+s);

    }
}
接下來,爲示例代碼建立配置文件helloMessage.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="HelloChina" class="cn.lovepi.chapter01.HelloChina">

    </bean>
    <bean id="HelloWorld" class="cn.lovepi.chapter01.HelloWorld">

    </bean>
    <bean id="Person" class="cn.lovepi.chapter01.Person">
        <!--bean中屬性配置,屬性即爲類中所聲明的接口變量。給其添加了一個引用-->
        <property name="iHelloMessage" ref="HelloWorld">
        </property>
    </bean>
</beans>

在這裏我們爲每一個javaBean都聲明瞭他的名稱和具體類。在Person類中,因爲有一個IHelloMessage接口的對象聲明,所以得給Person類的bean中聲明一個屬性Property,name爲聲明的接口對象名稱,ref爲接口的具體實現類,在本示例中HelloWorld和HelloChina都屬於接口的實現類,則可以根據更改ref的值來實現具體使用那一個實現類。

編譯並運行示例工程,在控制檯查看輸出信息,驗證程序運行是否正常:

通過配置文件,來控制人的輸出信息
當人在國內時,是否輸出了“大家好!”的信息
當人在國外時,是否輸出了“Hello everybody!”的信息

總結:
       通過這個簡單的小示例,使我認識到了Spring框架的冰山一角,正所謂“管中窺豹,可見一斑”,由此也對於Spring的開發框架有了一個大致的瞭解。認識了其利用配置文件來實現IoC的具體實現,充分體會到了利用配置文件控制系統的快速與便捷性。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章