1. 程式人生 > >spring IOC(DI)

spring IOC(DI)

ati 運行期 cati 概念 test 關系 好的 control 對象

軟件152 劉昊翰

一、IOC(DI) 概念

IOC(Inversion of Control,控制倒轉)Ioc意味著將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制。

DI—Dependency Injection,即“依賴註入”:組件之間依賴關系由容器在運行期決定,形象的說,即由容器動態的將某個依賴關系註入到組件之中。

依賴註入(DI)和控制反轉(IOC)是從不同的角度的描述的同一件事情,就是指通過引入IOC容器,利用依賴關系註入的方式,實現對象之間的解耦。

3.2.2 IOC

1.USB.java代碼:

package cqvie.com;

interface USB //USB接口

{

public void insert();

public String read();

public void write(String s);

public void pop();

}

2.UDisk.java代碼:

package cqvie.com;

import org.springframework.stereotype.Component;

@Component

public class UDisk implements USB

{

public void insert() {

System.out.println("讀入U盤");

}

public String read(){

System.out.println("讀取數據:");

return "data";

}

public void write(String s){

System.out.println("寫入數據");

}

public void pop(){

System.out.println("彈出U盤");

}

}

3.Computer.java代碼:

package cqvie.com;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.stereotype.Component;

@Component("theComputer")

public class Computer

{

@Autowired

[email protected]("UDisk")

private USB usbDevice;

public Computer(){ } //這裏不能構造USB設備

public void saveData(String data) //實現智能設備的方法

{ //insert,write,pop

usbDevice.insert();

usbDevice.write(data);

usbDevice.pop();

}

public void setUsbDevice(USB u){ usbDevice=u; }

}

4.test.java代碼:

package cqvie.com;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {

public static void main(String[] args) {

//Computer c=new Computer();

//USB u=new UDisk();

//c.setUsbDevice(u);

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"applicationContext.xml");

Computer c=(Computer) ctx.getBean("theComputer");

c.saveData("個人簡歷");

Computer1 c1=new Computer1();

HDD mp=new movHDD();

c1.setMpDevice(mp);

c1.saveData("移動硬盤");

}

}

5.applicationContext.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:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

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

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="u1" class="cqvie.com.UDisk"></bean>

<bean id="theComputer" class="cqvie.com.Computer">

<property name="usbDevice" ref="u1"></property>

</bean>

</beans>

6.運行結果如圖

技術分享

spring IOC(DI)