IOC爲了處理類與類之間複雜關係而產生,經過控制反轉與依賴注入思想將類與類之間的關係放到配置文件中,個各種都是相對獨立存在的,類之間的調用關係由配置文件來實現。由此實現程序的鬆耦合。 spring
DI:控制反轉, 框架
依賴注入方式: this
1.接口注入:在接口中定義要注入的信息,並經過接口來完成注入。(Spring不支持這種注入方式--不支持的緣由是--Spring聲稱其是非入侵式的《離開這個框架也能活》,若是使用接口注入的話,就違背了這一原則) xml
2.設置注入:在被注入類中定義set方法,並在參數中定義須要注入的對象。先實例化對象,而後查找對依賴的對象並實例化依賴對象,最後調用set方法將依賴對象注入。 對象
<?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-2.5.xsd">
<bean id="actions" class="Actions"/>
<bean id="execute" class="Execute">
<property name="actions">
<ref bean="actions"/>
</property>
</bean>
</beans> 接口
public class Execute {
Actions actions;
public void setActions(Actions actions) {
this.actions = actions;
}
public Execute(){} //構造方法
public void doStr(){
actions.say();
}
} io
3.構造注入:在要被注入的類中聲明一個構造方法,並在此方法的參數中定義要注入的對象。spring調用構造方法時,會將這些對象都實例化好,而後經這些對象做爲參數注入。 class
<?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-2.5.xsd">
<bean id="actions" class="Actions"/>
<bean id="execute" class="Execute">
<property name="actions">
<ref bean="actions"/>
</property>
</bean>
</beans> 配置
public class Execute {
IActions actions;
public Execute(Actions actions){//構造方法
this.actions = actions;
}
public void doStr(){
actions.say();
}
} coding