IOC和AOP是什么鬼?

Posted CTO技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOC和AOP是什么鬼?相关的知识,希望对你有一定的参考价值。

01

Spring

    Spring 是一个轻量级的控制反转(IOC)面向切面(AOP)的容器,Java 开发框架,Spring是为了简化企业级开发的框架。
    在实际开发中还是需要配置XML文件或者JavaConfig文件,并且需要考虑各个框架之间的融合性问题。


02

IOC

控制反转(IOC)一种设计思想,它是Spring的核心

    我们分别从控制反转来理解IOC。

    控制,即我们平时直接在对象的内部new一个依赖的对象,啥意思?你new了一个儿子对象,是不是还得在儿子对象中new它的依赖对象父亲对象!在IOC中意味着将你设计好的对象交给容器控制而不是传统的在你的对象内部直接控制

    反转,我们平时在对象内部直接new依赖对象的操作就是反转的对立IOC容器帮我们创建及注入依赖对象的行为就叫反转。

   IOC对于Spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系。对于这个描述还是不理解的话,

    你需要找个女盆友(男盆友也行),要求是S型曲线,瓜子脸,肤白貌美……,显然除了你一个个去“New”没有其它办法。但是现在有了“中介”,你直接把你的要求告诉中介,中介直接给你提供“对象”,“女朋友找中介“,是不是很爽?,是的,IOC干的这样的事。简而言之,对象交给 Spring(IOC)控制管理,而不是传统的由你在对象内部直接创建控制。


03

AOP

    传统OOP面向对象编程,在我们实际开发中都会有具体的业务模块需求,但是我们在实现这些业务模块功能的时候,经常要干一些 额外的不可避免 的事情,比如事务的管理,日志的记录等,并且在每个业务模块都必须要实现一次,这就 导致 代码的 重复 耦合 。AOP把软件分为两个部分:核心业务逻辑组件横切关注点。核心业务逻辑就是我们要实现的业务逻辑,而像日志、验证、事务等等这些与核心业务逻辑不想关的称为横切关注点。

IOC和AOP是什么鬼?

以实现一个系统的登录举例,

IOC和AOP是什么鬼?

    我们可以把业务流程1和业务流程2看做核心业务逻辑(竖着看),但是横着的验证,日志记录等这些不属于核心业务逻辑却必须要做(不做这些你试试?),横着的这部分就叫做横切关注点,整体上看就像验证日志这些功能横着切入竖着的核心业务流程当中去的,有木有很形象?!


AOP的好处不言而喻:

  • 横切关注点都集中于一块,不会出现大量重复代码;

  • 核心模块只关注核心功能的代码,模块间藕合度降低。


简而言之,AOP就是在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。



04

总结

are you ok?








CTO技术

关注我






以上是关于IOC和AOP是什么鬼?的主要内容,如果未能解决你的问题,请参考以下文章

Spring AOPAspectJCGLIB 都是什么鬼?它们有什么关系?

spring的ioc和aop都是啥??

面试官:Spring AOPAspectJCGLIB 都是什么鬼?它们有什么关系?

java编程,spring里ioc和aop用啥原理实现的

控制反转(ioc)和 面向切面(AOP)

spring - ioc和aop