Spring的切入点表达式

@PointCut切入点表达式语法格式是:execution(访问权限 返回值类型 方法全限定名(参数类型列表))

  限定符:

    *:

      1)匹配某全类名下,任意或多个方法:

         表示匹配com.zdc.aop.Calculator下以a打头的任意方法。并且返回值和两个参数都是int类型。

       execution(public int com.zdc.aop.Calculator.a*(int, int))

             表示匹配com.zdc.aop.Calculator下的任意方法。并且返回值和两个参数都是int类型。

       execution(public int com.zdc.aop.Calculator.*(int, int))

      2)在Spring中只有public权限能拦截到,访问权限可以省略(访问权限不能写*):

          // 权限省略,表示任意类型的访问权限 ,但Spring现在只支持public权限

            execution(int com.zdc.aop.Calculator.*(int, int))

      3)匹配任意类型的返回值,可以使用 * 表示:

         execution(* com.zdc.aop.Calculator.*(int, int))

      4) 任意类型参数:

          // 表示第二个参数是任意类型

        execution(* com.zdc.aop.Calculator.*(int,*))

  ..:可以匹配多层路径,或任意多个任意类型参数:

      // 表示com和aop之间可以有任意层级的包

      execution(* com..aop.Calculator.*(int,int))

      // 表示第一个参数是int。之后可以有任意个任意类型的参数

      execution(* com.zdc.aop.Calculator.*(int,..))

  切入点表达式连接:&& 、||:

    // 表示需要同时满足两个表达式

    @Before("execution(public int com.zdc.aop.Calculator.add(int, int))"

      + " && "

      + "execution(public * com.zdc.aop.Calculator.add(..))")

    // 表示两个条件只需要满足一个,就会被匹配到

     @Before("execution(public int com.zdc.aop.Calculator.add(int, int))"

  + " || "

   + "execution(public * com.zdc.aop.Calculator.a*(int))")

  

原文地址:https://www.cnblogs.com/Life-is-Demo/p/12641442.html

时间: 2024-10-02 18:18:24

Spring的切入点表达式的相关文章

必备技能:spring aop 切入点表达式,你都会么?

本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @within @annotation @args 1.execute表达式 拦截任意公共方法 execution(public * *(..)) 拦截以set开头的任意方法 execution(* set*(..)) 拦截类或者接口中的方法 execution(* com.xyz.service.AccountService.*(..)) 拦截Account

Spring AOP 切入点表达式使用

1.切入点表达式 1)匹配类型 用于匹配哪些类型的方法启用方面组件,语法格式如下 within(类型) --匹配容器中HibernateCostDaoImpl的所有方法 within(com.tarena.dao.HibernateCostDaoImpl) --匹配com.tarena包下所有类的所有方法 within(com.tarena.*) --匹配com.tarena包及子包的所有类的所有方法 within(com.tarena..*) 2)匹配方法 用于匹配哪些方法启用方面组件,语法格

Java进阶知识22 Spring execution 切入点表达式

1.概述   切入点(execution ):可以对指定的方法进行拦截,从而给指定的类生成代理对象.(拦截谁,就是在谁那里切入指定的程序/方法) 格式: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?) 参数解析: modifiers-pattern?:指定方法的修饰符,支持通配符,该部分可以省略.(public/pr

Spring切入点表达式常用写法

自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异. 下面给出一些常见示例的写法: 比如,下面是一个对Service包上所有方法的切面配置 <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* *..service*..*(..))"/> <aop:adv

Spring(三)--AOP【面向切面编程】、通知类型及使用、切入点表达式

1.概念:Aspect Oriented Programming 面向切面编程 在方法的前后添加方法 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 -- 3.情景举例 ①数学计算器接口[MathCalculator] int add(int i,int j); int sub(int i,int j); int mul(int i, int j); int div(int i,int j); 因为后面的通知方法需要返回值,所以在这里类型声明为 int 类型 public

zbb20181012 spring,aop,execution切入点表达式

execution切入点表达式 Spring AOP 用户可能会经常使用 execution切入点指示符.执行表达式的格式如下:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)除了返回类型模式(上面代码片断中的ret-type-pattern),名字模式和参数模式以外, 所有的部分都是可选的.返回类型模式决定了方法的返

【Spring AOP】切入点表达式(四)

一.切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点: within:用于匹配指定的类及其子类中的所有方法. this:匹配可以向上转型为this指定的类型的代理对象中的所有方法. target:匹配可以向上转型为target指定的类型的目标对象中的所有方法. args:用于匹配运行时传入的参数列表的类型为指定的参数列表类型的方法: @

SpringAop_切入点表达式

  (..) 所有的方法 任意的参数,  com.spring..*   子包     例子: 前提 需要导入包:   commons-logging.jarspring.jarcglib-nodep-2.1_3.jaraspectjrt.jaraspectjweaver.jar       ApplicationContext.xml   <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q

Spring Aspectj切入点语法定义

在使用spring框架配置AOP的时候,pointcut"切入点" 例如定义切入点表达式 execution(* com.sample.service.impl..*.*(..)) execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分: 1.execution(): 表达式主体. 2.第一个*号:表示返回类型,*号表示所有的类型. 3.包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.sample.service.impl包