spring IOC(DI)
軟件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)