一、spring aop 概念
Advice 通知(方法级) | 要增强的功能(安全、校验、日志等) |
JoinPoint 连接点 | 就是spring允许你使用通知的地方,那可真就多了,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点,spring只支持方法连接点.其他如aspectJ还可以让你在构造器或属性注入时都行,不过那不是咱关注的,只要记住,和方法有关的前前后后(抛出异常),都是连接点 |
Pointcut 切入点 定位到业务实现中的方法 | 切入点,在接点的基础上,来定义切入点,对应关系。 |
Aspect 切面 | 切面是通知和切入点的结合 |
二、例子
需求:在接口实现的任何一个方法中,方法前添加前置日志,校验。方法后添加后置日志。
1、接口
2、实现
3、切面
4、日志
注意:这里的方法参数JoinPoint joinPoint是可以取到对应的信息,但是如果要获取返回值、异常对象的话,必须要在切面中配置。
5、aop的配置
6、测试代码
7、结果现象
The method add start with [1, 11]
-->validate:[1, 11]
The method add ends
The method add ends with 12
The method sub start with [1, 11]
-->validate:[1, 11]
The method sub ends
The method sub ends with -10
The method mul start with [1, 11]
-->validate:[1, 11]
The method mul ends
The method mul ends with 11
The method div start with [1, 11]
-->validate:[1, 11]
The method div ends
The method div ends with 0