spring aop 使用 execution表达式 pointcut 到指定接口 |
您所在的位置:网站首页 › execution配置 › 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个或者多个参数)+匹配指定类型及其子类型;仅能作为后缀放在类型模式后边 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |