Spring中AOP的简单使用
什么是AOP
AOP (Aspect Orient Programming),直译过来就是 面向切面编程,是对面向对象编程的一种补充。AOP通过动态代理的方式,为系统提供某种通用的功能。
AOP的应用场景
典型的AOP使用场景有:
日志记录
事务管理
权限验证
性能检测
AOP的基本概念
核心概念
Joinpoint(连接点): 被拦截的点,在Spring中可以被动态代理拦截的目标类方法
Pointcut(切入点): 指要对那些 Joinpoint 进行拦截,即被拦截的连接点
Advice(通知): 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容
Target(目标): 指代理的目标对象
Weaving(植入): 指把增强代码应用到目标上,生成代理对象的过程
Proxy(代理): 指生成的代理对象
Aspect(切面): 切入点和通知的结合
AOP 通知分类
before(前置通知): 通知方法在目标方法调用之前执行
after(后置通知): 通知方法在目标方法返回或异常后执行
after-returning(返回后通知): 通知方法在目标方法返回后执行
after-throwing(抛出异常通知): 通知方法在目标方法抛出异常后执行
around(环绕通知): 通知方法会将目标方法封装起来
一个例子
下面用一个简单的例子通过AOP来实现方法级的日志记录
定义注解
1 | /** |
定义切面
1 |
|
关于AOP
的几个重要注解:
@Aspect
:这个注解表示将当前类视为一个切面类@Component
:表示将当前类交由Spring
管理。@Pointcut
:切点表达式,定义我们的匹配规则,上边我们使用@Pointcut("@annotation(com.zjun.aoplog.Log)")
表示匹配带有我们自定义注解的方法。@Around
:环绕通知,可以在目标方法执行前后执行一些操作,以及目标方法抛出异常时执行的操作。
在Controller中使用切面
1 |
|
执行结果:
1 | 在目标方法之前执行! |
- 标题: Spring中AOP的简单使用
- 作者: zjun
- 创建于 : 2019-05-20 16:40:52
- 更新于 : 2023-11-30 21:14:48
- 链接: https://zjun.site/2019/05/9e8623f096b1.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论