美文网首页
深入理解Spring-AOP

深入理解Spring-AOP

作者: colde_包包白 | 来源:发表于2020-04-05 10:03 被阅读0次

1. AOP概述

1.1 什么是AOP

Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
本质:在不改变原有逻辑的情况下增强横切逻辑。

1.2 解决了什么问题

1.2.1 业务场景分析
image.png

图中红框圈出来的地方为重复代码,而采用传统的OOP思想无法很好的解决这已问题,存在大量的重复劳动,且不易维护,并且与业务代码耦合。

1.2.2 AOP业务重构
image.png

AOP可以说是OOP的补充和完善。OOP通过引入封装、继承和多态来建立一种对象的层次结构,用于模拟公共行为的一个集合,但OOP无法很好的解决为分散的对象引入公共行为,AOP为OOP补足了这一块短板。

1.3 AOP适用场景

  • 日志记录
  • 性能统计
  • 安全控制
  • 事务处理
  • 异常处理

2. Spring AOP

image.png
  • Joinpoint(连接点):
    可以⽤于把增强代码加⼊到业务主线中的点
  • Pointcut(切⼊点):
    指的是那些已经把增强代码加⼊到业务主线进来之后的连接点。
  • Advice(通知/增强):
    它指的是切⾯类中⽤于提供增强功能的⽅法
  • Target(⽬标对象):
    它指的是代理的⽬标对象。即被代理对象。
  • Proxy(代理) :
    它指的是⼀个类被AOP织⼊增强后,产⽣的代理类。即代理对象。
  • Weaving(织⼊):
    它指的是把增强应⽤到⽬标对象来创建新的代理对象的过程。spring采⽤动态代理织⼊,⽽AspectJ采⽤编译期织⼊和类装载期织⼊。
  • Aspect(切⾯):
    它指定是增强的代码所关注的⽅⾯,把这些相关的增强代码定义到⼀个类中,这个类就是切⾯类

3. 总结

AOP是OOP的延续,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。使用AOP时需梳理清晰当前增强功能是否适合避免滥用AOP,并提供清晰的说明文档进行说明,避免后续开发人员在代码阅读时忽略AOP增强功能。

相关文章

网友评论

      本文标题:深入理解Spring-AOP

      本文链接:https://www.haomeiwen.com/subject/mfuyphtx.html