【Spring 学习笔记 (十二)】Spring AOP 切入点表达式
写在前面😘
大一电子信息工程新生,请多多关照,希望能在 InfoQ 社区记录自己的学习历程!
【Spring 学习笔记】 系列教程基于
Spring 5.2.10.RELEASE
讲解。
两个概念
切入点:要进行增强的方法(被拦截的一个或多个连接点的集合)
切入点表达式:要进行增强的方法的描述方式
一、切入点语法格式
切入点表达式标准格式:execution([修饰符] 返回值类型 类的全限定名.方法名(参数名)异常类型)
复制代码
注意: 修饰符和异常类型可以省略。
二、切入点通配符
使用通配符描述切入点,可以简化书写,使用一个注解就可以获取到多个目标对象,然后给这些目标对象添加通知。
返回值类型:
*
可以代表为任何返回值。如果返回值为对象,则需指定全路径的类名。方法名
*
可以代表所有方法。select*
代表以 set 开头的所有方法:如 selectByName()、selectById()等等参数名
(..)
代表任意参数(无参或多参都行);(*)
代表只有一个参数,参数类型为任意类型;(*,*)
代表有两个参数,且两个参数类型为任意类型;(*,int)
代表有两个参数,第一个参数可以为任何类型,第二个为 int 类型。
复制代码
三、切入点表达式编写技巧
描述切入点通常描述接口,而不描述实现类,如果描述到实现类,就出现紧耦合了
返回值类型对于增删改类使用精准类型加速匹配,对于查询类使用
*
通配快速描述包名书写尽量不使用
..
匹配,效率过低,常用*
做单个包描述匹配,或精准匹配接口名/类名书写名称与模块相关的采用
*
匹配,例如 UserService 书写成*Service,绑定业务层接口名方法名书写以动词进行精准匹匹配,名词采用
*
匹配,例如 selectById 书写成 selectBy*通常不使用异常作为匹配规则
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
评论