SpringAop中AspectJ框架的切入点表达式

 更新时间:2023年08月15日 11:18:10   作者:辰小白  
这篇文章主要介绍了SpringAop中AspectJ框架的切入点表达式,AspectJ是一个基于Java语言的AOP框架,Spring2.0以后新增了对AspectJ切点表达式支持,@AspectJ 是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面,需要的朋友可以参考下

1.AspectJ简介

  • AspectJ是一个基于Java语言的AOP框架
  • Spring2.0以后新增了对AspectJ切点表达式支持
  • @AspectJ 是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面
  • 新版本Spring框架,建议使用AspectJ方式来开发AOP
  • 主要用途:自定义开发

2.切入点表达式

execution()

用于描述方法

语法:execution(修饰符 返回值 包.类.方法名(参数) throws异常)

修饰符,一般省略

public公共方法
*任意

返回值,不能省略

void返回没有值
String返回值字符串
*任意

包,[省略]

com.gyf.crm固定包
com.gyf.crm.*.service crm包下面子包任意 (例如:com.gyf.crm.staff.service)
com.gyf.crm..  crm包下面的所有子包(含自己)
com.gyf.crm.*.service..  crm包下面任意子包,固定目录service,service目录任意包

类,[省略]

UserServiceImpl                         指定类
*Impl以Impl结尾
User*   以User开头
*      任意

方法名,不能省略

addUser                                       固定方法
add*            以add开头
*Do            以Do结尾
*          任意

(参数)

()      无参
(int)      一个整型
(int ,int)    两个
(..)       参数任意

throws ,可省略,一般不写

案例1

execution(* com.gyf.crm.*.service..*.*(..))

案例2 或

<aop:pointcut expression="execution(* com.gyf.crm.service.*.*(..)) || 
execution(* com.gyf.*Do.*(..))" id="myPointCut"/>

within:

匹配包或子包中的方法(了解)

within(com.gyf.aop..*)

this:

匹配实现接口的代理对象中的方法(了解)

this(com.gyf.aop.user.UserDAO)

target:

匹配实现接口的目标对象中的方法(了解)

target(com.gyf.aop.user.UserDAO)

args:

匹配参数格式符合标准的方法(了解)

args(int,int)

bean(id) 

对指定的bean所有的方法(了解)

bean('userServiceId')

3.通知类型

  • before:前置通知(应用:各种校验):在方法执行前执行,如果通知抛出异常,阻止方法运行
  • afterReturning:后置通知(应用:常规数据处理):方法正常返回后执行,如果方法中抛出异常,通知无法执行,必须在方法执行后才执行,所以可以获得方法的返回值。
  • around:环绕通知(应用:十分强大,可以做任何事情):方法执行前后分别执行,可以阻止方法的执行,必须手动执行目标方法
  • afterThrowing:抛出异常通知(应用:包装异常信息):方法抛出异常后执行,如果方法没有抛出异常,无法执行
  • after:最终通知(应用:清理现场):方法执行完毕后执行,无论方法中是否出现异常

到此这篇关于SpringAop中AspectJ框架的切入点表达式的文章就介绍到这了,更多相关AspectJ框架的切入点表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中如何自定义一个类加载器加载自己指定的类

    Java中如何自定义一个类加载器加载自己指定的类

    这篇文章主要给大家介绍了关于Java中如何自定义一个类加载器加载自己指定的类,自定义类加载器允许我们加载特定路径的类文件,并且可以用于插件系统、热部署和隔离加载等场景,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析

    JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析

    这篇文章主要介绍了JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析及简单处理方法,文中给大家介绍了javaweb中dbutils的使用,需要的朋友可以参考下
    2017-12-12
  • SpringBoot Admin 使用指南(推荐)

    SpringBoot Admin 使用指南(推荐)

    这篇文章主要介绍了SpringBoot Admin 使用指南(推荐),Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序,非常具有实用价值,需要的朋友可以参考下
    2018-01-01
  • Eclipse配置tomcat发布路径的问题wtpwebapps解决办法

    Eclipse配置tomcat发布路径的问题wtpwebapps解决办法

    这篇文章主要介绍了Eclipse配置tomcat发布路径的问题wtpwebapps解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • 基于strict-origin-when-cross-origin问题的解决

    基于strict-origin-when-cross-origin问题的解决

    这篇文章主要介绍了基于strict-origin-when-cross-origin问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

    Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

    文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Service及测试示例,通过使用注解如@RedisHash、@Cacheable等,可以简化操作并提高性能,文章还提供了关键注解的说明和测试验证方法,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • java中字符串替换常用的4种方法

    java中字符串替换常用的4种方法

    在Java中String类提供了许多方便的方法来处理字符串,下面这篇文章主要给大家介绍了关于java中字符串替换常用的4种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Spring MVC温故而知新系列教程之请求映射RequestMapping注解

    Spring MVC温故而知新系列教程之请求映射RequestMapping注解

    这篇文章主要介绍了Spring MVC温故而知新系列教程之请求映射RequestMapping注解的相关知识,文中给大家介绍了RequestMapping注解提供的几个属性及注解说明,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况

    解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况

    这篇文章主要介绍了解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 浅析java移位符的具体使用

    浅析java移位符的具体使用

    这篇文章主要介绍了浅析java移位符的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论