Spring AOP 切入点表达式使用

1、切入点表达式

1)匹配类型

用于匹配哪些类型的方法启用方面组件,语法格式如下

within(类型)

--匹配容器中HibernateCostDaoImpl的所有方法

within(com.tarena.dao.HibernateCostDaoImpl)

--匹配com.tarena包下所有类的所有方法

within(com.tarena.*)

--匹配com.tarena包及子包的所有类的所有方法

within(com.tarena..*)

2)匹配方法

用于匹配哪些方法启用方面组件,语法格式如下

execution(修饰符? 返回类型 方法名(参数列表) throws异常?)

--匹配所有对象的delete方法

execution(* delete(..))

--匹配HibernateCostDaoImpl的delete方法

execution(* com.tarena.dao.HibernateCostDaoImpl.delete(..))

--匹配HibernateCostDaoImpl的所有方法

execution(* com.tarena.dao.HibernateCostDaoImpl.*(..))

--匹配com.tarena包下所有类的所有方法

execution(* com.tarena.*.*(..))

--匹配com.tarena包及子包下所有类的所有方法

execution(* com.tarena..*.*(..))

3)匹配bean名称

用于匹配bean的id属性,语法格式如下

bean(id属性值)

--匹配id="costDao"的组件的所有方法

bean(costDao)

--匹配所有id以Dao结尾的组件的所有方法

bean(*Dao)

4)匹配参数

用于匹配参数类型和个数,代码格式如下

args(参数列表)

--匹配有一个参数并且为String类型的所有方法

args(java.lang.String)

时间: 2024-11-06 03:35:23

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

必备技能: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 execution表达式说明

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

Spring的切入点表达式

@PointCut切入点表达式语法格式是:execution(访问权限 返回值类型 方法全限定名(参数类型列表)) 限定符: *: 1)匹配某全类名下,任意或多个方法: 表示匹配com.zdc.aop.Calculator下以a打头的任意方法.并且返回值和两个参数都是int类型. execution(public int com.zdc.aop.Calculator.a*(int, int))       表示匹配com.zdc.aop.Calculator下的任意方法.并且返回值和两个参数都是

AOP切入点表达式

任意公共方法的执行: execution(public * *(..)) 任何一个以“set”开始的方法的执行: execution(* set*(..)) AccountService 接口的任意方法的执行: execution(* com.xyz.service.AccountService.*(..)) 定义在service包里的任意方法的执行: execution(* com.xyz.service.*.*(..)) 定义在service包或者子包里的任意方法的执行: execution

Spring Aop 切点表达式

在Spring AOP 中,通常需要借助AspectJ 的切点表达式语言来定义切点.重要的是Spring 中仅支持AspectJ切点指示器的一个子集. Spring 支持的AspectJ的切点指示器 AspectJ 指示器 描述 args() 限制连接点匹配参数为执行类型的执行方法 @args() 限制连接点匹配参数由执行注解标注的执行方法 execution() 匹配连接点的执行方法 this() 限制连接点匹配AOP代理的Bean引用类型为指定类型的Bean target() 限制连接点匹配

Spring AOP切点表达式用法总结

1. 简介 面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的.通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示: 面向对象编程解决了业务模块的封装复用的问题,但是对于某些模块,其本身并不独属于摸个业务模块,而是根据不同的情况,贯穿于某几个或全部的模块之间的.例如登录验证,其只开放几个可以不用登录的接口给用户使用(一般登录使用拦截器实现,但是其切面思想是一致

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 AOP excution表达式各符号意思

execution(*com.sample.service.impl..*.*(..)) 符号 含义 execution() 表达式的主题 第一个"*"符号 表示返回值的类型任意: com.sample.service.impl AOP所切的服务的包名 包名后面的".." 表示当前包及子包 第二个"*" 表示类名,*即所有类.可自定义 .*(..) 表示任何方法名,括号表示参 数,两个点表示任何参数类型 原文地址:https://www.cnbl

使用注解匹配Spring Aop切点表达式

Spring中的类基本都会标注解,所以使用注解匹配切点可以满足绝大部分需求 主要使用@within()/@target @annotaton() @args()等... 匹配@Service类中的所有方法: @within(org.springframework.stereotype.Service) 或 @target(org.springframework.stereotype.Service) 匹配标注了@RequestMapping的所有方法 @annotation(org.spring