参考文章
https://www.jianshu.com/p/872d3dbdc2ca
基本概念
它是面向对象编程的一种补充,主要应用于处理一些具有横切性质的系统级服务,如日志收集、事务管理、统一异常处理等。
- Pointcut(切点):是一个(组)基于正则表达式的表达式,有点绕,就是说他本身是一个表达式,但是他是基于正则语法的。通常一个pointcut,会选取程序中的某些我们感兴趣的执行点,或者说是程序执行点的集合。
- JoinPoint(连接点):通过pointcut选取出来的集合中的具体的一个执行点,我们就叫JoinPoint.
- Advice(通知):在选取出来的JoinPoint上要执行的操作、逻辑。关于5种类型,我不多说,不懂的同学自己补基础。
- Aspect(切面):就是我们关注点的模块化。这个关注点可能会横切多个对象和模块,事务管理是横切关注点的很好的例子。它是一个抽象的概念,从软件的角度来说是指在应用程序不同模块中的某一个领域或方面。又pointcut 和advice组成。
- Weaving(织入):把切面应用到目标对象来创建新的 advised 对象的过程。
AspectJ
AspectJ是一个易用的功能强大的AOP框架,可以单独使用,也可以整合到其它框架中。单独使用AspectJ时需要使用专门的编译器ajc。java的编译器是javac,AspectJ的编译器是ajc,aj是首字母缩写,c即compiler。
Spring Aop与AspectJ区别

image.png