Spring反转控制(IOC)和依赖注入(DI)
2015-11-19 00:04
666 查看
控制反转(Inversion of Control ,Ioc)
我认为所谓反转控制(IOC),就是在编程过程中开发人员常说的“实现必须依赖抽象,而不是抽象以来实现”,这就是从变现形式上对反转控制的一种解释。从工作模式上说,无需在代码中创建被调用者,而是交给外部容器去进行初始化,原来初始化被调用者的过程掌握在自己手中,而现在却掌握在外部容器里。
依赖注入(Dependency Injection)
所谓依赖注入的过程就是初始化的过程,这是spring的容器功能,在实现类中不需要对被调用者初始化的实现,我在开发中常用的方法有setter注入(setter injection)、构造注入(constructor injection),此外还有接口注入(interface injection)。
1 、 setter注入(setter injection)
setter注入就是在接受注入的类中添加被调用者的setter方法。然后在配置文件中通过添加setter方法实现注入:
.....
public class UserService{
private userDao;
.......
public void setUserDao( UserDao userDao){
this.userDao=userDao;
}
}
通过Spring.xml的property标签来获取setter方法并把userDao注入给他:
<bean id = "us" class="com.hp.service.UserService">
<property name="userDao" ref="ud">
<bean>
2、构造注入(constructor injection)
构造注入就是在接收注入的类中定义一个构造方法,把被调用对象作为参数传入的一种方式:
.....
public class UserService{
private userDao;
public UserService(UserDao userDao){
super();
this.userDao=userDao;
}
}
通过Spring.xml的constructor-arg标签来把userDao注入给他:
<bean id = "us" class="com.hp.service.UserService">
<constructor-arg><ref bean="ud"/> </constructor-arg>
<bean>
3、接口注入(interface injection)
接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入,开发中较少用到。
这样通过ioc,可以利用setter 、constructor来实现自己的对象与对象之间的依赖关系实现DI,减少了程序的复写,降低组件之间的耦合度,实现软件各层之间的解耦。
我认为所谓反转控制(IOC),就是在编程过程中开发人员常说的“实现必须依赖抽象,而不是抽象以来实现”,这就是从变现形式上对反转控制的一种解释。从工作模式上说,无需在代码中创建被调用者,而是交给外部容器去进行初始化,原来初始化被调用者的过程掌握在自己手中,而现在却掌握在外部容器里。
依赖注入(Dependency Injection)
所谓依赖注入的过程就是初始化的过程,这是spring的容器功能,在实现类中不需要对被调用者初始化的实现,我在开发中常用的方法有setter注入(setter injection)、构造注入(constructor injection),此外还有接口注入(interface injection)。
1 、 setter注入(setter injection)
setter注入就是在接受注入的类中添加被调用者的setter方法。然后在配置文件中通过添加setter方法实现注入:
.....
public class UserService{
private userDao;
.......
public void setUserDao( UserDao userDao){
this.userDao=userDao;
}
}
通过Spring.xml的property标签来获取setter方法并把userDao注入给他:
<bean id = "us" class="com.hp.service.UserService">
<property name="userDao" ref="ud">
<bean>
2、构造注入(constructor injection)
构造注入就是在接收注入的类中定义一个构造方法,把被调用对象作为参数传入的一种方式:
.....
public class UserService{
private userDao;
public UserService(UserDao userDao){
super();
this.userDao=userDao;
}
}
通过Spring.xml的constructor-arg标签来把userDao注入给他:
<bean id = "us" class="com.hp.service.UserService">
<constructor-arg><ref bean="ud"/> </constructor-arg>
<bean>
3、接口注入(interface injection)
接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入,开发中较少用到。
这样通过ioc,可以利用setter 、constructor来实现自己的对象与对象之间的依赖关系实现DI,减少了程序的复写,降低组件之间的耦合度,实现软件各层之间的解耦。
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- 无线网卡安装DIY
- JavaScript中的依赖注入详解
- 浅析依赖注入框架Autofac的使用
- 浅析Node.js中使用依赖注入的相关问题及解决方法
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置
- 如何用js 实现依赖注入的思想,后端框架思想搬到前端来
- 深入理解Javascript里的依赖注入