1. 程式人生 > >【Spring】簡單入門例項

【Spring】簡單入門例項

從一個簡單的例子入門,輕鬆瞭解依賴注入。
假設我們開發了一套管理系統,每收到一筆訂單後,系統呼叫notifyservice.sendMessage給客戶傳送訂單成功郵件。有天老闆(也有可能是產品)突然要改個需求:將原來的給客戶傳送郵件功能改為發手機簡訊。你無需改動任何程式碼,只是在配置中將“傳送器”配置成“手機發送器”,就能完成工作。

一、建立工程

這裡我們選擇選擇普通的Java Project。
在這裡插入圖片描述

二、新增Spring及相關元件

三、寫業務邏輯

程式碼結構如下:
在這裡插入圖片描述

介面 NotifyService.java

  public interface NotifyService {
        void sendMessage(String message);
    }

實現 NotifyServiceByCellPhoneImpl.java

public class NotifyServiceByCellPhoneImpl implements NotifyService{
    @Override
    public void sendMessage(String message) {
        System.out.println("傳送手機簡訊:"+message);
    }
}

實現 NotifyServiceByWeixinImpl.java

public class NotifyServiceByWeixinImpl implements NotifyService{
    @Override
    public void sendMessage(String message) {
        System.out.println("傳送微信簡訊:"+message);
    }
}

訂單類 Order.java

public class Order {
    private NotifyService notifyservice;
    /*notifyservice不是在內部new()出來的,
    而是通過指定方法傳進來的,也就是我們說的注入。這裡是setter注入*/
    public void setNotifyservice(NotifyService notifyservice) {
        this.notifyservice = notifyservice;
    }
    public Order(){}
    public Order(NotifyService notifyservice) {
        this.notifyservice = notifyservice;
    }
    /*訂單支付完成後,系統通知老闆*/
    public void PaySuccess(){
        notifyservice.sendMessage("客戶張鐵蛋完成訂單2017079657付款,共人民幣:97.5元");
    }
}

四、配置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="notify" class="twm.spring.start.NotifyServiceByWeixinImpl" />
<bean id="order" class="twm.spring.start.Order" >
    <!-- 配置注入NotifyServiceByCellPhoneImpl的例項化物件 -->
    <property name="notifyservice" ref="notify"/>
</bean>
</beans> 

五、呼叫:

Test.java檔案:

public class Test {
    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        Order order=ctx.getBean("order",Order.class);
        order.PaySuccess();
    }
}

輸出:

傳送微信簡訊:客戶張鐵蛋完成訂單2017079657付款,共人民幣:97.5元

老闆如果要求我們用手機簡訊傳送通知,我們就到配置檔案beans.xml中進行修改:

<bean id="notify" class="twm.spring.start.NotifyServiceByWeixinImpl" />

修改為

<bean id="notify" class="twm.spring.start.NotifyServiceByCellPhoneImpl" />

再次執行輸出:

傳送手機簡訊:客戶張鐵蛋完成訂單2017079657付款,共人民幣:97.5元