Spring02:IOC理论推导
2、IOC理论推导
-
IOC(inversion of control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法
-
之前我们要写一个业务应该写一下这几步:
UserDao接口
-
UserDaoImplement实现类
-
UserService业务接口
-
UserServiceImplement实现类
-
外界只需要调用service层就可以了,不用看到Dao
-
注:这样子我们的代码量特别大,要是UserDao的实现类特别多,在UserServiceImpl中想调用不同的UserDao实现类, 那我们就要修改代码去完成不同的多态,这样会显得非常麻烦
private UserDao dao = new UserDaoMysql(); private UserDao dao = new UserDaoSQLServer(); private UserDao dao = new UserDaoOracle(); // 等等.... // 我们需要使用dao层的不同实现类,需要去service实现类里面修改对应的实现,特别麻烦
我们在UserService的实现类中使用set方法(接口)实现,相对以前,发生了革命性的变化。
private UserDao dao; //使用set方法,动态的控制UserDao对象的创建,通过多态 //我们在调用方法的时候,传入该接口(这个接口是dao接口)的不同实现类 public void setDao(UserDao dao) { this.dao = dao; }
现在去我们的测试类里 , 进行测试 :
//我们在调用方法的时候,传入该接口(这个接口是dao接口)的不同实现类 @Test public void test(){ UserServiceImpl service = new UserServiceImpl(); service.setUserDao( new UserDaoMySqlImpl() ); service.getUser(); //那我们现在又想用Oracle去实现呢 service.setUserDao( new UserDaoOracleImpl() ); service.getUser(); }
之前,程序是主动创建对象,控制权在程序员手上,用户的每一次需求,我们都回去该后端的代码,Dao是写死的
//写死了 private UserDao dao1 = new UserDaoImol1(); private UserDao dao2 = new UserDaoImol2(); private UserDao dao3 = new UserDaoImol3();
现在使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序员不再去管理对象的创建了,系统的耦合性大大降低,可以更加专注的在业务的实现上!这是ICO的原型
个人认为,所谓的控制反转, 就是:获得依赖对象的方式反转了
原来:
IOC:
IOC本质
-
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
-
-
IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。
-
Spring容器在初始化时**先读取配置文件**,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器(其实就是配置文件中的beans)中取出需要的对象。
-
采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
-
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。
- Spring笔记2--IOC理论推导
- Spring01概述及IOC理论推导
- Sping5---IOC理论推导再一步步深入
- Spring核心技术(1)控制反转(Inversion of Control,IoC)理论
- SVM理论学习及数学推导
- 机器学习入门学习笔记:(2.1)线性回归理论推导
- 深度学习笔记——理论与推导之Structured Learning【Markov Logic Network】(十一)
- DPN的理论推导部分解释
- IOC&AOP学习和探索(一)——AOP基本理论及实现
- 《反脆弱》:软件业现成的鲁棒性(Robust)换了个说法变成了作者的发明,按作者的理论推导出许多可笑愚蠢的原则来
- 【理论】支持向量机2: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念
- Spring:概述、IOC理论
- 导航姿态解算——基础理论及推导
- 卷积神经网络反向传播理论推导
- 基于深度学习的语音识别研究-CTC理论推导(四)
- 卷积神经网络反向传播理论推导
- EM 算法理论推导
- 卷积神经网络反向传播理论推导
- 经济学理论推导的人民币加速升值论不成立
- 卷积神经网络反向传播理论推导