Spring Aop

官方文档

了解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()可以修改目标方法的参数

静态代理

静态代理UML

SpringAop的底层技术

  • JDK动态代理(默认)
  • CGLIB代理

编译时织入还是运行时织入?两者都是运行时织入
初始化时织入还是获取对象时织入?通过源码分析,在初始化时织入

AspectJ静态织入
动态织入

推荐阅读

JDK动态代理与CGLIB动态代理代码讲解

AOP的应用场景

  • 性能检测
  • 日志记录
  • 权限验证
  • 效率检查
  • 事务管理
  • Mysql读写分离

你可能感兴趣的:(Spring Aop)