spring aop Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: 报错

       最近这几天在公司研究spring aop(面向切面编程),在使用spring 注解实现时,遇到了一个bug,由此记录一下,方便日后读阅;报错如下图所示:

  由于是第一次接触spring aop 当时就懵逼了,在网上搜索相关的错误,最后找到了自己的问题出在哪里;

 我这里出错的原因是因为在使用注解定义切面对象的切入点时,没有使用spring aop中的 execution()的表达式导致出现这样的错误,一开始的代码如下:红色部分出错

@Aspect
// 声明该类是切面类
@Component
// 配置文件中启动自动扫描功能,将该切面交给spring 去管理
public class Transaction {

  // 定义切点
  @Pointcut(" com.bjsd.aop.service.*.*(..)")
  public void allMethod() {
  };

  /**
   * 在核心业务执行前执行,不能阻止核心业务的调用。
   * 
   * @param joinPoint
   */
  @Before("allMethod()")
  private void doBefore(JoinPoint joinPoint) {
    System.out.println("-----doBefore().invoke-----");
    System.out.println(" 此处意在执行核心业务逻辑前,做一些安全性的判断等等");
    System.out.println(" 可通过joinPoint来获取所需要的内容");
    System.out.println("-----End of doBefore()------");
  }
}
     修改方法:在使用注解定义切入点时要使用 execution()表达式去匹配我们程序中的哪个包中的哪个类的哪个方法被定义为切入点。

 修改后的代码:
 

@Aspect
// 声明该类是切面类
@Component
// 配置文件中启动自动扫描功能,将该切面交给spring 去管理
public class Transaction {

  // 定义切点
  @Pointcut("execution(* com.bjsd.aop.service.*.*(..))")
  public void allMethod() {
  };

  /**
   * 在核心业务执行前执行,不能阻止核心业务的调用。
   * 
   * @param joinPoint
   */
   @Before("allMethod()")
   private void doBefore(JoinPoint joinPoint) {
   System.out.println("-----doBefore().invoke-----");
   System.out.println(" 此处意在执行核心业务逻辑前,做一些安全性的判断等等");
   System.out.println(" 可通过joinPoint来获取所需要的内容");
   System.out.println("-----End of doBefore()------");
   }
}
   最后问题解决;哪位朋友有不同的见解,欢迎留言,大家共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值