IOC(控制反转)
1.什么是控制反转
之前我们在业务层需要调用dao层,那么我们的做法是直接在业务层创建一个dao层的对象,这样有一个很大的问题就是大家知道我们需要提高开发效率,就要提高代码的可复用性,假如下次有一个相同业务逻辑的项目我们是需要把之前业务层的代码直接拿过来复用的,但是因为我们之前在业务层中创建了dao对象,所以导致我们不能直接把业务层代码直接复用,也就是业务层不是那么独立,这个时候业务层依赖dao层
spring帮我们很好的解决了这个问题,之前我们需要dao层的对象直接由业务层自己创建,也就是说创建对象的权利在业务层,现在创建的对象的权利交给了spring,就是把对象交给spring来管理(Spring通过配置帮我们的业务层导入了dao对象,从而减少了业务层和dao层的耦合关系)这样我们就解决了之前的问题
2.谁控制
谁控制现在就很明确了吧,当然是spring控制
3.什么叫反转
对象的控制权发生了反转,之前谁需要谁创建,现在全权交给spring完成
4.为什么要控制反转
最大程度减少代码的耦合(完全消除代码的耦合不太现实,我们要做的就是尽量减少代码的耦合,时代码具有高可复用性)
- 传统的耦合,减少一个轮子其他都不转动了
- 有了ioc后,其他轮子之间耦合减少了
DI(依赖注入)
1.什么是依赖注入
ioc是一种原则,spring说我们要实现控制反转,将对象交给我,可是我们此时怎么做到了,怎么实现控制反转了,那么DI就帮我们实现了控制反转,可以理解DI是IOC的实现。
Spring通过配置(三种方式)帮我们实现了对象之间的依赖(在一个bean对象中注入另一个bean对象,就实现依赖关系) 这就叫依赖注意
2.注入什么
注入bean对象(为了配合上文的例子,可以理解成dao对象)
业务层中需要dao对象,所以我们就注入在业务层注入这个dao对象
3.谁注入
当然是spring注入,注入的是对象,全权交给spring管理,(可以理解成spring就是月老,可以调节不同对象的之间的关系,你需要这个对象spring就把这个对象给你,他需要spring也给他,哈哈)
以上个人见解,如有错误和不合理的地方欢迎大佬指正