IOC和AOP思想的学习理解


前言

学习Spring源码过程中,包括自己在面试过程中,反复被IOC、AOP问题按在地上反复摩擦,自己也不好理解。

一、IOC

1.什么是IOC?

就是控制反转,那么什么是控制反转。

控制:对象的创建(实例化、管理)。

反转: 控制权交给外部环境(Spring框架、IOC容器)。在初入门JAVA的时候创建对象都是new AClass()这样的方式来创建。而反转之后,不由我们来new对象。

**开发方式的区别:**传统下自己new对象,IOC下由IOC容器创建、管理、销毁。

2.IOC做了什么?

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

比如:自定义的执行器Excutor接口,有最常用的三种实现类

  • OneExcutor(内含AMethod()方法);
  • TwoExcutor(内含BMethod()方法);
  • ThreeExcutor(内含CMethod()方法);

但是在Spirng实际用的过程中,我们都是:

@Autowired
private Excutor excutor;

然后excutor.AMethod();这样来执行,但是具体是实例化哪一个执行器其实你并不需要管,因为IOC都帮你做了。

3.IOC和DI的区别

DI:依赖注入。

  • IOC和DI描述的都是->对象实例化及依赖关系维护这件事,但是角度也不一样。
  • IOC站在对象的角度,对象实例化及依赖关系维护权力交给(反转)容器。
  • DI站在容器角度,容器会把对象依赖的其他对象注入。

二、什么是AOP?

1.什么是AOP?

AOP是OOP(面向对象编程)的延伸。

OOP三大特性:封装、继承和多态。

OOP可以解决大部分的代码重复问题,但是切面问题不行,比如事务管理、接口的权限校验、比如日志收集,写在业务逻辑中,整个业务逻辑会非常肿胀,而且一旦要改切面代码所有接口一起改,老大难接口,维护到想吐。但是AOP可以做到。

2.AOP做了什么?

在不改变业务逻辑代码的前提下,增强切面代码,根本上解耦和。

一句话来说,把切面代码抽离出来,业务是业务,切面是切面。

3.面向切面编程到底是什么?

切是指,横切逻辑。
面是指,横切逻辑往往影响很多方法,每个方法看成一个点,所有点成一个面。
指的是切面,不改变业务的情况下增强切面代码。

总结

其实,IOC和AOP就是一个创建管理对象,一个对方法进行增强。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值