`
garrincha
  • 浏览: 13502 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Spring AOP 盗梦空间之五——切入点表达式

阅读更多
书接上回
上回降到LEO把before和after重构,改为使用around。
日本人提高了防范,LEO不确定需要从哪个方法入手,需要一些通配符来侵入方法。
这里我们就谈谈AOP语法中表达式
@Pointcut("execution(public void com.spring.service.Person.haveSleep())")
这是之前例子的表达式。我们来详细讲解一下
这是指定了一个具体的方法,这个很好理解。
1、假设Person类中haveSleep()方法有一个重载方法
public void haveSleep(date starttime ,date endtime)
这两个方法LEO都需要编制waving,怎么办,我们把这个切入点改为
@Pointcut("execution(public void com.spring.service.Person.haveSleep(..))")
加了2个.问题就解决了。有点类似于正则表达式吧。

2、LEO还需要编织其他睡觉的方法,包括haveNap()和haveNightmare()方法,LEO发现所有睡觉的方法都是以have开头的。怎么办呢?
@Pointcut("execution(public void com.spring.service.Person.have*(..))")
同正则表达式一样*表示任意数字的字符

3、LEO需要把范围再扩大一些,扩大到com.spring.service下所有类的所有方法
@Pointcut("execution(* com.spring.service.*.*(..))")
星号的用法自己摸索和体会一下吧。

4、之前在谈过使用@AfterThrowing来捕获异常,使用表达式可以专门针对Throws的方法进行编织waving。(即方法声明中带有Throws的方法)
@Pointcut("execution(public void com.spring.service.Person.have*() throws Exception)"
在这里我们以have开头的方法有多个,但是只会在
public void haveNightmare()throws Exception方法上进行编织

先到这里啦,一般的需求,这几种相互组合就差不多了,再有需要看文档即可
分享到:
评论

相关推荐

    9Spring AOP 盗梦空间之四——Around

    "9Spring AOP 盗梦空间之四——Around"这个标题暗示我们将深入探讨Spring AOP中的一个关键概念——环绕通知(Around Advice)。环绕通知是Spring AOP中功能最全面的通知类型,它提供了对方法执行前、执行后以及异常...

    7Spring AOP盗梦空间之二——获得返回值AfterReturnning

    通过阅读《Spring AOP盗梦空间之二——获得返回值AfterReturnning》这篇博文(链接:https://garrincha.iteye.com/blog/2111779),你可以获得更详细的实践指导和示例代码。同时,结合提供的压缩包文件"Spring_AOP_...

    8Spring AOP盗梦空间之三 ——AfterThrowing

    Spring AOP支持五种通知类型:前置通知(Before)、后置通知(After)、返回通知(After Returning)、异常通知(After Throwing)和环绕通知(Around)。 `AfterThrowing`通知在方法抛出异常时执行,它允许我们在...

    springaop中切入点表达式完整示例代码

    在Spring AOP(面向切面编程)中,切入点表达式是定义通知(advice)执行时机的关键元素。本文将深入探讨9种不同的切入点表达式及其用法,通过实际的示例代码来帮助理解它们的工作原理。 1. **execute()**: `...

    spring的AOP和AOP相关概念切入点表达式写法详细说明.emmx

    使用mindmaster打开

    详解Spring 框架中切入点 pointcut 表达式的常用写法

    在Spring框架中,切入点(pointcut)表达式是AOP(面向切面编程)的核心组成部分,用于定义关注点的精确位置,比如哪些方法应该被拦截。切入点表达式是基于AspectJ语法的,允许开发者精确地指定要拦截的方法。下面将详细...

    Spring AOP 16道面试题及答案.docx

    Spring AOP中有五种不同类型的的通知(Advice): 1. 前置通知(Before Advice):在方法执行前执行,使用`@Before`注解。 2. 返回后通知(After Returning Advice):在方法正常返回后执行,使用`@AfterReturning`...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在深入理解 Spring AOP 的源码时,需要熟悉 Spring IoC 的工作原理,以及 AOP 相关的概念,如切点表达式、通知类型等。了解这些基础知识可以帮助我们更好地掌握 Spring AOP 的实现细节。在分析源码时,可以参考作者...

    spring aop jar 包

    Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...

    五、Spring源码分析——Spring Aop

    AOP是一种编程范式,它将关注点分离,使得我们可以将横切关注点(如日志、事务管理、安全检查等)与业务逻辑解耦。在Spring框架中,AOP主要通过代理模式实现,提供了声明式的通知(advises)和切面(aspects)。 ...

    Spring AOP面向方面编程原理:AOP概念

    4. **丰富的切入点表达式语言**:Spring AOP支持使用SpEL(Spring Expression Language)来定义复杂的切入点表达式,这让开发者能够更加灵活地控制通知的触发条件。 #### 四、Spring AOP的实现示例 接下来,我们...

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    spring aop 五个依赖jar

    AspectJ是一个强大的、成熟的AOP框架,它扩展了Java语言,允许开发者定义切面、切入点表达式和通知。在Spring AOP中,你可以选择使用AspectJ的编译时或运行时织入,以实现更细粒度的控制和更高的性能。 2. **...

    SpringBoot下的SpringAOP-day04-源代码

    SpringBoot下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法 1.动态代理总结 1.1 JDK动态代理特点 1.2 CGlib动态代理 1.2.1 CGLib特点说明 1.3 动态代理的作用 2 Spring...

    spring aop依赖jar包

    现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...

    切入点表达式

    切入点表达式是面向切面编程(AOP)中不可或缺的一部分,尤其在AspectJ和Spring框架中,用于精确地定义何时及何处应用切面。本文将深入探讨AspectJ的切入点表达式,包括其语法结构和常见用法。 切入点表达式的核心...

    Spring AOP简单demo

    在Spring AOP中,通过表达式或注解来定义切入点。 3. **通知(Advice)**:通知是在特定切入点上执行的行为,比如记录日志、开始/结束事务等。有五种不同类型的通知:前置通知(Before)、后置通知(After)、返回...

    Spring aop 性能监控器

    尤其是`org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator`和`org.springframework.aop.aspectj.AspectJExpressionPointcut`这两个类,它们分别处理了基于注解的切面创建和切入点...

    Spring AOP实现机制

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的可复用性和可维护性。 ### 1. ...

Global site tag (gtag.js) - Google Analytics