spring aop 使用 execution表达式 pointcut 到指定接口

对需要处理的方法,使用@Pointcut做切入点,通过其他方法对切入点做处理。

    @Pointcut("execution(* pers.crayon.april.demo.forum.controller.ArticleController.details*(..))")
    public void yourExcutionName() {
    }

编辑excution表达式定位切入点。
推荐大佬的文章,可以看到详解,本文做使用摘要,不求甚解
https://blog.csdn.net/likun557/article/details/107096539

1、execution——表达式摘要说明

切点使用execution(方法表达式)匹配方法执行

  • execution格式如下:
    execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
execution(* pers.crayon.april.demo.forum.controller.ArticleController.details*(..))"

在表达式中

带 ?号的部分是可选项,如:
modifiers-pattern?,declaring-type-pattern?,hrows-pattern?

表达式中的可选项可选项解释
modifier-pattern修饰符匹配,如public 表示匹配公有方法
declaring-type-pattern类路径匹配
throws-pattern异常类型匹配

其余是必选项

表达式中的必选项必选项解释
ret-type-pattern返回值匹配,* 表示任何返回值,全路径的类名等
name-pattern方法名匹配,* 代表所有,set*,代表以set开头的所有方法
param-pattern参数匹配,指定方法参数(声明的类型),(…)代表所有参数,(*,String)代表第一个参数为任何值,第二个为String类型,(…,String)代表最后一个参数是String类型

2、举例说明

例如开头的表达式

"execution(* pers.crayon.april.demo.forum.controller.ArticleController.details*(..))"
↓表达式如下↓
* pers.crayon.april.demo.forum.controller.ArticleController.details*(..)
↓对公式进行匹配↓
modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?

只用了必选项,其中

  • ‘*’
    表示匹配所有类型返回值
  • ‘pers.crayon.april.demo.forum.controller.ArticleController.details*’
    表示匹配 pers.crayon.april.demo.forum.controller包下 ArticleController 类中,details为方法名开头方法
  • ‘(…)’
    表示匹配所有入参

所以,表达式的意思合起来就是——“匹配 pers.crayon.april.demo.forum.controller包下 ArticleController 类中,details为方法名开头且入参与返回值为所有类型的方法

很多地方会按照类型的匹配,再来说一下类型匹配的语法。

AspectJ类型匹配的通配符:

通配符含义
*匹配任何数量字符
匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数(0个或者多个参数)
+匹配指定类型及其子类型;仅能作为后缀放在类型模式后边
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值