srping后置通知报错java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut

2019/3/31

问题描述
通过如下注解加入了后置通知

  @AfterReturning("execution(public * addStudent(..))")

并且在后置通知的方法中如下加入了返回参数

	public void myAfter(JoinPoint jp,Object returningValue)

结果在运行测试类是报错,错误信息如下

    java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut 

解决思路
1.通过报错的信息可以知道这是一个有关参数类型的报错
2.通过注解可以发现,execution()中的方法是没有返回值,但是我这里却添加了返回值,所以导致错误,需要在execution()中对应方法的代码中添加返回参数。
3.在声明方法中,我添加了 Object returningValue 这个返回参数,虽然在2中解决了原方法中没有返回参数的问题,但是这里的returningValue并没有告诉spring,导致了错误。

解决办法

1.把addStudent()设置成返回参数类型,并设置返回参数。代码如下:

public boolean addStudent(Student student) {
		//该学生是否存在
		studentDao.addStudent(student);
		return true;
	}

2.修改后置通知注解,将返回参数告诉spring,修改后注解代码如下:

@AfterReturning(pointcut = "execution(public * addStudent(..))",returning="returningValue")

***注意!!!!
在用注解形式实现aop时,通知方法的参数不能多也不能少!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值