`

Pointcut命名有可能导致错误

    博客分类:
  • java
阅读更多
使用Spring @AspectJ方式的AOP,代码
@Aspect
public class AndyaoAspect {

  @Pointcut("execution(* com.andyao.Repository.get(java.lang.Integer))&& args(id)")
  public void get(Integer id){
  }
  
  @Around("get(id)")
  public Object fromCache(ProceedingJoinPoint pjp, Integer id) throws Throwable {
    ...
  }

}

这段代码看上去没有什么问题,但是真正执行中,会抛出exception

@Around("get(id)")
java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 6

 翻阅文档发现问题所在:

写道
其他的切入点类型

完整的AspectJ切入点语言支持额外的切入点指定者,但是 Spring不支持这个功能。 他们分别是call, initialization, preinitialization, staticinitialization, get, set, handler, adviceexecution, withincode, cflow, cflowbelow, if, @this 和 @withincode。 在Spring AOP中使用这些指定者将会导致抛出IllegalArgumentException异常。

Spring AOP支持的切入点指定者可能在将来的版本中得到扩展,不但支持更多的AspectJ 切入点指定者(例如"if"),还会支持某些Spring特有的切入点指定者,比如"bean"(用于匹配bean的名字)。
 所以在使用spring AOP的时候不能以上面的诸如call,get等命名,不然就会报异常。
分享到:
评论

相关推荐

    can't find referenced pointcut

    spring-framework-3.1.1.RELEASE jdk1.7 环境下 can't find referenced pointcut 问题解决 换了对应的jar文件即可 aspectjrt.jar aspectj-1.6.6.jar aspectjweaver.jar

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

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

    Spring AOP Example – Pointcut , Advisor

    在`SpringExamples`压缩包中,可能包含了演示如何创建和配置Spring AOP的代码示例。通常,我们会创建一个切面类(Aspect),在这个类中定义pointcut和advice,然后在Spring配置文件中声明这个切面,使其生效。例如:...

    pointcut表达式and or not在xml中配置

    ### Pointcut表达式and、or、not在XML中的配置详解 ...这不仅有助于提高代码的可读性和可维护性,还能够使我们的应用程序更加健壮和高效。希望本文能帮助读者更好地理解和运用Spring AOP中的Pointcut表达式。

    【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within

    上文我们已讲完五种通知Advice注解,所以从本文开始介绍@Pointcut切点表达式,虽然Spring AOP的切点表达式尚未 全部实现 @AspectJ 的切点指示符,但是也已经足够多和灵活,本文主要介绍@Pointcut切点表达式中的@...

    【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知

    在微服务流行的当下,在使用SpringCloud/Springboot框架开发中,AOP使用的非常广泛,尤其是@Aspect注解方式当属最流行的,不止功能强大,性能也很优秀,还很舒心!...有任何问题,欢迎大家私信联系我. 作者:天罡gg

    如何使用Spring Boot的@Pointcut注解

    // 假设这里有一个变量executionTime记录了方法执行的时间 long executionTime = System.currentTimeMillis(); System.out.println(methodName + " executed in " + executionTime + "ms"); } } ``` 4. **...

    切点(Pointcut)(处理方案).md

    切点(Pointcut)(处理方案).md

    Java EE,Spring基础及应用-切入点(Pointcut)

    在这篇文章中,我们将深入探讨Spring中的切入点(Pointcut)概念,它是AOP的关键组成部分。 首先,我们要明白什么是AOP。AOP是一种编程范式,它允许程序员定义“方面”——关注点的模块化,这些关注点是跨越多个...

    JavaEE源代码 Spring_Pointcut

    JavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_...

    java中的0 can‘t find referenced pointcut runTim

    后来经过排查,发现是自己的写法有问题,在@Around的参数中我们使用的是runtime(),这里是有问题的! @Around: 环绕增强,相当于MethodInterceptor. 这里Around的value参数应该写的是上面的签名,而不是runTime,...

    spring学习之六“AOP使用spring静态配置文件的实现”

    虽然AOP提供了便利,但过度使用可能导致额外的性能开销,因为每次方法调用都可能需要创建代理对象并执行通知。 10. **源码分析**: 对于深入理解,可以查看Spring AOP的源码,了解其内部是如何根据配置创建代理...

    Spring AOP配置源码

    <aop:after-throwing method="exception" pointcut-ref="pointCut"/> aop异常通知 以上结合起来意思就是在调用com.spring.service包或子包下的所有方法之前或之后或抛出异常时依次调用id为logIntercepter的类中的...

    基于java的企业级应用开发:AspectJ开发.ppt

    <aop:after-returning method="myAfterReturning" pointcut-ref="myPointCut" returning="returnVal" /> <aop:around method="myAround" pointcut-ref="myPointCut" /> ...

    Tomcat中--Error listenerStart错误的解决方案

    1. **依赖冲突:** 如果项目中存在多个不同版本的Spring或其他依赖库,可能会导致类路径冲突,进而引发此类错误。 2. **配置错误:** `web.xml`中的`ContextLoaderListener`配置不正确,例如类名拼写错误或路径错误...

    SpringBoot中的AOP+自定义注解(源代码)

    1.2 `@Pointcut` 创建切入点 1.3 通知 1.4 Spring AOP 和 AspectJ AOP 有什么区别? 2. 在 SpringBoot 中使用 Aop 功能 2.0 创建一个SpringBoot项目 2.1 引入 POM 依赖 2.1.1 引入springboot aop依赖 2.1.2 引入...

    Spring中的AOP不生效

    - 如果是通过基于注解的方式启用AOP,需要确保切面类上有`@Aspect`注解,并且配置类中有`@EnableAspectJAutoProxy`注解。 - 示例代码如下: ```java @Aspect public class YourAspect { @Before("execution(* ...

    Spring AOP 问题

    1. **配置错误**:不正确的配置可能导致通知不生效,例如忘记在配置文件中启用AOP代理或切点表达式定义错误。 2. **代理问题**:Spring提供了两种类型的代理,JDK动态代理和CGLIB代理。JDK代理适用于接口实现类,而...

    Spring Framewor开发手册

    Table of Contents ...2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置

Global site tag (gtag.js) - Google Analytics