spring入门(15) execution匹配符解析

Spring AOP 用户可能会经常使用 execution切入点指示符。执行表达式的格式如下:

execution(modifiers- pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)

throws-pattern?)

除了返回类型模式(上面代码片断中的ret-type-pattern),名字模式和参数模式以外, 所有的部分都是可选的。 返回类型模式决定了方法的返回类型必须依次匹配一个连接点。 你会使用的最频繁的返回类型模式是*,它代表了匹配任意 的返回类型。 一个全限定的类型名将只会匹配返回给定类型的方法。名字模式匹配的是方法名。 你可以使用*通配符作为 所有或者部分命名模式。 参数模式稍微有点复杂:()匹配了一个不接受任何参数的方法, 而(..)匹配了一个接受任意数量 参数的方法(零或者更多)。 模式(*)匹配了一个接受一个任何类型的参数的方法。 模式(*,String)匹配了一个接受两个 参数的方法,第一个可以是任意类型, 第二个则必须是String类型。更多的信息请参阅AspectJ编程指南中 语言语义的部 分。

下面给出一些通用切入点表达式的例子。

任意公共方法的执行:

execution(public * *(..) )//第一个*表示返回值类型,第二个*表示方法名,(..)中表示方法可以任意参数。

任何一个名字以“set”开始 的方法的执行:

execution(* set*(..))//第一*个表示返回值类型

AccountService接口定义的任意方法 的执行:

execution(* com.xyz.service.AccountService.*(..))//第一*个表示返回值类型,第二个*表示方法 名,()类表示方法参数。

在service包中定义的任意方法的执行:

execution(* com.xyz.service.*.* (..))//第一*个表示返回值类型,第二个*表示类名,第三个*表示方法名,()类表示方法参数。

在service包或 其子包中定义的任意方法的执行:

execution(* com.xyz.service..*.*(..))

时间: 2024-09-29 15:04:17

spring入门(15) execution匹配符解析的相关文章

spring-请问如何打印AspectJ的切点函数execution匹配了那些类或方法?

问题描述 请问如何打印AspectJ的切点函数execution匹配了那些类或方法? 如 :在 spring 匹配了 execution(* com.tj.Waiter.*(..)) 匹配了那些类? 单纯是想打打印出来, 验证下结果, 不是问切点函数的语法. 解决方案 Waiter下所有的方法都调用一次,你就知道匹配了那些了

《Spring 5 官方文档》1. Spring入门指南(一)

译者注:为了方便理解,本译文里面部分名词翻译如下,如有异议,请在评论区指出. Dependency Injection - 依赖注入 Inversion of Control – 控制反转 Instrumentation – 植入 AOP - 面向切面​​的编程 Milestones – 里程碑 Snapshots – 快照 Artifact - 工件(这个词在文中大部分地方都没有翻译,用过Maven或Gradle的都明白,如果有更好的中文翻译,请写在评论区) 1.Spring入门指南 本参考指

spring入门(2)---第一个spring案例

直接上图: 源码: HelloDao.java package www.csdn.spring.dao; public interface HelloDao { public void sayHello(); } HelloDAoImpl.java package www.csdn.spring.dao; public class HelloDaoImpl implements HelloDao{ public HelloDaoImpl() { System.out.println("Hello

spring入门(1)---开始spring之旅

Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发 . IOC 控制反转 public class PersonServiceBean { private PersonDao personDao = new PersonDaoBean(); public void save(Person person){ personDao.save(person); } } PersonDaoBean 是在应用内部创

SQL Server四种匹配符的含义

四种匹配符的含义 % 代表零个或者多个任意字符 代表一个任意字符 [] 指定范围内的任意单个字符 [^] 不在指定范围内的任意单个字符 带有匹配符的字符串必须使用引号引起来,例如下面的示例: LIKE 'BR%'返回以"BR"开始的任意字符串. LIKE 'Br%'返回以"Br"开始的任意字符中. LIKE '%een'返回以"een"结束的任意字符串. LIKE '%en%'返回包含"en"的任意字符串. liKE 'en'

c++- libevent http server 如何匹配并解析restful url里的路径参数

问题描述 libevent http server 如何匹配并解析restful url里的路径参数 比如查询一个用户的信息 我们输入url: http://xxxx.com/user/12345 这是目前流行的restful的标准 主流的java web框架,C++的cppcms web框架都支持解析出 http://xxxx.com/user/{userid} 这里面的userid输入参数 但高并发的C++ http服务框架里libevent http是很常用的,但我看参考文档里只有解析传统

Nginx配置指令location匹配符优先级和安全问题

使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可.特别是它的配置,有点像写程序一样,每行命令结尾一个";"号,语句块用"{}"括起来. 配制好,直接nginx -t 检查配制情况,配制成功,直接运行:service nginx reload .服务器没有任何宕机情况下,实现平稳修改配置 最近一直在做location 配置,遇到优先级别问题(如果配置不当可能存在安全隐患哦),以下是个人学习一点体会. 一. location 的匹配符1.等于匹配

Spring Boot 定制URL匹配规则的方法

事情的起源:有人问我,说编写了一个/hello访问路径,但是吧,不管是输入/hello还是/hello.html,还是/hello.xxx都能进行访问.当时我还以为他对代码进行处理了,后来发现不是,后来发现这是Spring Boot路由规则.好了,有废话了下,那么看看我们解决上面这个导致的问题. 构建web应用程序时,并不是所有的URL请求都遵循默认的规则.有时,我们希望RESTful URL匹配的时候包含定界符".",这种情况在Spring中可以称之为"定界符定义的格式&q

spring入门(14)ssh中事务处理spring配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/t