一、IoC定义
IoC,即控制反转。开发者在使用类的实例之前,需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC。在讨论控制反转这个概念的过程中,Martin Fowler提出了一个更为准确的概念,叫做依赖注入(Dependency Injection)。
二、依赖注入的类型
(1)设值注入
IoC容器使用成员变量的setter方法来注入被依赖对象
<bean class="com.mk.User"><property name="username">zhangsan</property>
</bean>
(2)构造注入
IoC容器使用构造器来注入被依赖对象
<bean class="com.mk.User"><constructor-arg >zhangsan</property>
</bean>
(3)接口注入
Spring没有实现接口注入,接口注入和属性注入的功能差不多,但接口使得项目的类数量变多,现如今不推崇使用接口注入
<bean id="addressBean" class="com.mk.Address"><property name="addr" value="China"/>
</bean>
<bean class="com.mk.User"><property name="address" ref="addressBean"/>
</bean>
User类
class User{private String username;private IAddress address;public User(){}public User(String username){this.username=username;}public void setUsername(String username){this.username=username;}public void setAddress(IAddress address){this.address=address;}
}
IAddress类
class IAddress{public void setAddr(String addr);public String getAddr();
}
Address类
class Address extends IAddress{private String addr;public void setAddr(String addr){this.addr=addr;}public String getAddr(){return addr;}
}