遇到 AOP 环绕通知报错 “return value from advice does not match primitive return type for: public boolean”
百度后搜到是因为 环绕通知的返回值类型要为 object ,而出问题的代码返回值类型 写成了void。
参考:
那么为什么其他通知(前置 后置 异常 返回)的返回值类型都是void,环绕通知的返回值类型为object有什么用呢
参考:
简而言之,可以改变方法返回值,具体应用参见上面这个链接的内容。
作者原文:
1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法;而前置和后置通知 是不能决定的,他们只是在方法的调用前后执行通知而已,即目标方法肯定是要执行的。
2) 环绕通知可以控制返回对象,即你可以返回一个与目标对象完全不同的返回值,虽然这很危险,但是你却可以办到。而后置方法是无法办到的,因为他是在目标方法返回值后调用。