• 仅为做笔记用
  • 什么是IOC?
  • IOC解决了什么问题?
  • IOC 和 DI 的区别?
  • 首先声明:IOC & AOP不是Spring提出来的,它们在Spring之前其实已经存在了,只不过当时更加偏向于理论。 Spring 在技术层次将这两个思想进行了很好的实现。

    什么是 IOC

    IOC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。

    例如:现有 类A依赖于类B

    传统的开发方式:往往是在类A中手动通过new关键字来 new 一个B的对象出来

    使用IOC思想的开发方式: 不通过new关键字来创建对象,而是通过IOC容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从IOC容器里面过去即可。

    从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)

    为什么叫控制反转

    控制: 指的是对象创建(实例化、管理)的权力

    反转: 控制权交给外部环境(Spring框架、IOC容器)

  • springIoc 讲解

  • IOC 解决了什么问题

    IOC 主要解决的是对象之间的耦合问题。

    例如:现有一个针对User的操作,利用 Service 和 Dao 两层结构进行开发

    在没有使用IOC思想的情况下,Service 层想要使用 Dao层的具体实现的话,需要通过new关键字在UserServiceImpl 中手动 new出 IUserDao 的具体实现类 UserDaoImpl(不能直接new接口类)。

    springIoc 讲解

  • 很完美,这种方式也是可以实现的,但是我们想象一下如下场景:开发过程中突然接到一个新的需求,针对对IUserDao 接口开发出另一个具体实现类。因为Server层依赖了IUserDao的具体实现,所以我们需要修改UserServiceImpl中new的对象。如果只有一个类引用了IUserDao的具体实现,可能觉得还好,修改起来也不是很费力气,但是如果有许许多多的地方都引用了IUserDao的具体实现的话,一旦需要更换IUserDao的实现方式,那修改起来将会非常的头疼。

  • springIoc 讲解

  • 使用IOC的思想,我们将对象的控制权(创建、管理)交有IOC容器去管理,我们在使用的时候直接向IOC容器 “要” 就可以了、

  • springIoc 讲解

  • IOC 和 DI 的区别

    IOC 和 DI 描述的是同一件事情(对象实例化以及依赖关系的维护),只不过角度不同。

    IOC (Inversion of control ) 控制反转/反转控制。是站在对象的角度,对象实例化以及管理的权限(反转)交给了容器。

    DI (Dependancy Injection)依赖注入。是站在容器的角度,容器会把对象依赖的其他对象注入(送进去)。例如:对象A 实例化过程中因为声明了一个B类型的属性,那么就需要容器把B对象注入到A中。

    什么是AOP

相关文章:

  • 2021-06-07
  • 2021-09-01
  • 2021-10-11
  • 2022-12-23
  • 2021-05-26
  • 2022-12-23
猜你喜欢
  • 2022-02-20
  • 2021-10-12
  • 2022-01-06
  • 2022-01-07
  • 2021-11-18
  • 2021-09-03
  • 2021-05-08
相关资源
相似解决方案