了解AOP之前,建议先学习代理设计模式
什么是AOP
AOP(Aspect Oriented Programming):面向切面编程,是一种思想
OOP:代码逻辑是自上而下的,而在这些过程中,难免会产生一些横切性的问题(次要性业务),从而AOP就应运而生了。
AOP的编程思想是把业务逻辑与横切问题进行分离,从而达到 解耦的目的,提高代码的重用性及开发效率。
AOP术语
连接点(Join point):其实就是目标对象中的方法method
切点(Pointcut):许多连接点的集合,即方法的集合
切面(Aspect):切点、通知等的载体,也可以理解为一个类
目标对象(Target object)
代理对象(AOP proxy)
织入(Weaving):把代理逻辑织入到目标对象的过程
通知(Advice):什么时候通知,通知到哪里
通知类型:
Before
After
AfterThrowing
After (Finally)
Around Advice:
ProceedingJoinPoint和JoinPoint的区别:
ProceedingJoinPoint继承了JoinPoint,proceed()是aop代理链执行的方法
JoinPoint的方法:
1.getArgs()------获取连接点(方法)参数
2.getThis()------获取代理对象
3.getTarget()------获取目标对象
4.getSignature()------获取连接点的方法签名对象
proceed()可以修改目标方法的参数
静态代理
静态代理UMLSpringAop的底层技术
- JDK动态代理(默认)
- CGLIB代理
AspectJ静态织入 动态织入编译时织入还是运行时织入?两者都是运行时织入
初始化时织入还是获取对象时织入?通过源码分析,在初始化时织入
推荐阅读
AOP的应用场景
- 性能检测
- 日志记录
- 权限验证
- 效率检查
- 事务管理
- Mysql读写分离
网友评论