Spring aop报错Pointcut is not well-formed: expecting ‘(‘ at character position 0

今天在熟悉Spring aop的面向切面编程时,使用匹配参数方式写的代码报错:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot resolve reference to bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' while setting bean property 'transactionAttributeSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 0
matchArgs
^

根据报错是说我的切面方法没有括号().解决方法:把切面类中的@Before("matchArgs()")修改成@Before("matchArgs()")就可以了。代码如下:

package com.tfq.springaop.config;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.tfq.springaop.service.AuthService;


/**
 *
 *  @description 参数匹配
 *  @Pointcut("within(com.tfq.springaop.service.impl.*)&&args(Long)")
 *  //匹配第一个参数为Long型的方法
 *  @Pointcut("within(com.imooc.*)&&args(Long,..)")
 *  @author tangfq; 
 *  @version 2020年7月28日 下午2:30:44
 *
 **/
@Aspect
@Component
public class ArgsAspectConfig {

	@Autowired
	AuthService authService;
	
	
	@Pointcut("args(Long) && within(com.tfq.springaop.service.impl.*)")
	public void matchArgs(){
		
	}
	
	@Before("matchArgs()")
	public void before(){
		System.out.println("##before");
		authService.checkAccess();
	}
	
}

注意:@Before的matchArgs(),不要忘记写方法括号了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值