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