Spring之路(45)–Spring AOP常用的切入点表达式实例

简介: 本文目录1. 背景2. 表达式通配符3. 根据类型匹配4. 根据方法匹配5. 根据注解匹配6. 总结

1. 背景

上一篇演示了如何使用各类通知,这样我们对切入方法的通知比较了解了,还有一个重要工作是如何指定切面切入哪些方法,这里面就涉及切入点匹配的那个表达式,官方一点的说法就是切入点指示符。


Spring AOP的切入点表达式功能很强大,用法也很多,本篇只能是初探,把常用的用法给大家提下,有个初步印象,在做项目的时候,能知道有哪些切入方式。


2. 表达式通配符

需要先认识下切入点表达式中可以使用的通配符


通配符 说明

… 匹配方法定义中任何数量的参数,还可匹配类定义中任何数量的包

+ 匹配类的任何子类

* 匹配任何数量的字符

3. 根据类型匹配

使用within关键字可匹配类型(包括接口、类、包名)信息,例如:


表达式 含义

within(MyInterface+) 匹配实现MyInterface接口的类中的所有方法

within(org.maoge.service.UserService) 匹配UserService类中的所有方法

within(org.maoge.service…*) 将匹配org.maoge.service包(含子包)中所有类中的所有方法

注意,最终匹配的落脚点还是方法。


4. 根据方法匹配

使用execution关键字可匹配方法信息,例如:


表达式 含义

execute(* org.maoge.service.UserService.*(…)) 匹配UserService中的所有方法

execute(public * org.maoge.service.UserService.*(…)) 匹配UserService类中的所有public方法

execute(public String org.maoge.service.UserService.*(…)) 匹配UserService类中的所有返回值为String类型的public方法

execution(public org.maoge.xbo.ResultBO *(…)) 匹配所有返回值为ResultBO类型的public方法

execution(execution(public**(…)) 匹配任何返回类型、类名和参数的公共方法

5. 根据注解匹配

有时候需要指定一些特殊的方法进行匹配,可以指定匹配方法的注解。


表达式 含义

@annotation(org.maoge.DoneTimeAnnotation) 匹配使用了DoneTimeAnnotation注解的方法

6. 总结

落脚点都是方法,但是可以根据类型、方法、注解进行筛选。

相关文章
|
9月前
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
633 25
|
8月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot中使用拦截器——拦截器使用实例
本文主要讲解了Spring Boot中拦截器的使用实例,包括判断用户是否登录和取消特定拦截操作两大场景。通过token验证实现登录状态检查,未登录则拦截请求;定义自定义注解@UnInterception实现灵活取消拦截功能。最后总结了拦截器的创建、配置及对静态资源的影响,并提供两种配置方式供选择,帮助读者掌握拦截器的实际应用。
292 0
|
消息中间件 Java Kafka
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
705 5
|
监控 Java Spring
AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
1393 1
|
Java 开发者 Spring
|
前端开发 安全 Java
Spring EL表达式:概念、特性与应用深入解析
Spring EL表达式:概念、特性与应用深入解析
|
XML Java 数据库
Spring5入门到实战------10、操作术语解释--Aspectj注解开发实例。AOP切面编程的实际应用
这篇文章是Spring5框架的实战教程,详细解释了AOP的关键术语,包括连接点、切入点、通知、切面,并展示了如何使用AspectJ注解来开发AOP实例,包括切入点表达式的编写、增强方法的配置、代理对象的创建和优先级设置,以及如何通过注解方式实现完全的AOP配置。
|
Java Spring
Spring Boot Admin 离线实例
Spring Boot Admin 离线实例
160 0
|
Java Maven Spring
Spring中AOP最简单实例-@注解形式
Spring中AOP最简单实例-@注解形式
115 0
|
XML Java Maven
Spring中AOP最简单实例-XML形式
Spring中AOP最简单实例-XML形式
123 0