【Spring 从0开始】AOP 操作中的相关术语、环境准备
2021/8/3 23:06:50
本文主要是介绍【Spring 从0开始】AOP 操作中的相关术语、环境准备,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、常用术语
在后续使用 AOP 中会用到几个专业术语:连接点、切入点、通知(增强)、切面。
分别是什么意思?
来看这里有个 User 类,里面有增删改查 4 个方法。
public class User { public void add() {} public void delete() {} public void update() {} public void select() {} }
以此辅助说明一下上述 4 个术语:
- 连接点:类中可以被增强的方法,就叫做连接点。比如上面的 4 个方法都可以被增强,都可以称为连接点。
- 切入点:实际被真正增强的方法,称为切入点。比如上面的 4 个方法,只增强了 add() 方法,这个就是切入点。
- 通知(增强):实际上增强的逻辑部分,称为通知。比如我给方法增加了日志的输出处理,那这部分逻辑就称为通知或者增强。
- 切面:把通知(增强)应用到切入点的过程,就叫切面,指的是一个动作。
其中,关于通知(增强),有 5 种类型:
- 前置通知:被增强的方法之前执行。
- 后置通知:被增强的方法之后执行。
- 环绕通知:被增强的方法前后都执行。
- 异常通知:被增强的方法出现异常时执行。
- 最终通知:不管被增强的方法有没有异常都会执行。
二、准备工作
Spring 框架一般基于 AspectJ 实现 AOP 操作。
AspectJ 是一个独立的框架,不是 Spring 的组成部分。为了便捷,把二者结合起来使用。
那么基于 AspectJ 实现 AOP,可以有 2 种方式:
- 基于 xml 配置文件
- 基于注解方式。
一般为了便捷,使用注解方式。
1. 引入依赖
需要 jar 包如下:
2. 切入点表达式
作用是:知道要对哪个类里面的哪个方法进行增强。
结构:
execution([权限修饰符][返回类型][类全路径][方法名称]([参数列表]))
比如,我有个类 User 在 package com.pingguo.spring5.dao;
里。
(1)示例1
我要增强这个类下面的 add() 方法,表达式这么写:
execution(* com.pingguo.spring5.User.add(..))
*
号:代表所有类型的修饰符。- 返回类型:可以不写
- 类全路径:com.pingguo.spring5
- 方法:前面加
.
add() - 参数:括号里的 .. 表示方法中的参数
(2)示例2
我要增强这个类下面的所有方法,表达式这么写:
execution(* com.pingguo.spring5.User.*(..))
这里就是把方法用 *
号替换掉。
(3)示例3
我要增强包com.pingguo.spring5
下的所有类的所有方法:
execution(* com.pingguo.spring5.*.*(..))
仍然是用*
替换对应的地方。
这篇关于【Spring 从0开始】AOP 操作中的相关术语、环境准备的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行