【Java高级工程师蜕变之路】008 Spring核心思想


IOC

ioc不是spring提出的,spring只是ioc的一个实现

什么ioc

ioc(inversion of control)控制反转,他是一个技术思想,不是技术实现

ioc是做什么的

java领域对象的创建、管理问题

传统开发方式:类A依赖类B,在类中创建一个类B的对象

IOC开发方式:不需要创建对象,由容器帮忙创建对象并返回,需要哪个对象告诉IOC容器,由容器返回即可

利弊:失去了创建对象的权利,但是同时也得到了不需要管理对象创建、依赖等一系列好处

为什么叫控制反转

控制:对象的创建管理和实例化的权利

反转:控制权交给IOC容器了

IOC解决了什么问题

ioc解决了对象之间的耦合问题

IOC和DI的区别

DI:Dependency Injection 依赖注入

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

IOC站在对象角度,对象实例化和管理法人权利交给了容器

DI是站在容器的角度,容器会把对象依赖的其他对象注入

AOP

什么是AOP

Aspect oriented programming 面向切面编程

AOP是OOP的眼神

OOP三大特征:封装、继承、多态

OOP是垂直纵向继承体系

OOP可以解决大部分情况下的代码重复问题,但是有些问题解决不了

横切逻辑代码的问题

  • 代码重复

  • 横切代码和逻辑代码混合在一起,不利于维护

    AOP可以解决

AOP解决了什么问题

在不改变原有代码逻辑的情况下,增强横切逻辑代码,根本上解耦合,解决代码重复问题

为什么叫面向切面编程

切:横切逻辑,原有逻辑代码不能动,只能操作横切逻辑

面:横切逻影响很多方法,每个方法是一个点,多个点构成面