Spring AOP
4.1应用场景
- 日志
- 声明式事务
- 安全
- 缓存
- 通过@Around多次调用被通知方法,实现方法调用失败后的重试
- 统计方法调用次数,方法中某个参数的调用次数
4.2基本概念
Advice-通知
描述切面完成的工作
Before | After | After-returning | After-throwing | Around
Join point-连接点
可以插入切面的点
Pointcut-切点
织入切点的地方
4.3Spring AOP支持
- 基于代理的Spring AOP
- POJO切面
- @AspectJ注解驱动切面
- 注入式AspectJ切面
基于动态代理实现,运行期织入切面,局限于方法拦截
4.4注解创建切面
- @AspectJ标注POJO类
- @Before@AfterReturning@AfterThrowing@After@Around 标注方法
- 2中的注解的value属性为切点表达式,方法为切面逻辑
- 声明为bean
- @EnableAspectJAutoProxy | <aop:aspectj-autoproxy> (用于解析@AspectJ等切面注解)
4.5XML声明切面
- 切面POJO无注解
- 注册为bean
- <aop:config></aop:config>