java - Spring AOP java.lang.IllegalArgumentException:::0 处的错误在切入点中正式未绑定
问题描述
我想创建一个方面,它将拦截所有带有注释MyAnnotation
并具有参数类型的方法MyAbstractObject
(不同的类扩展它并且那些具有扩展它的类的方法也应该被拦截)
@Before("@annotation(mypackage.MyAnnotation) && args(mypackage.MyAbstractObject ,..)")
public void doSomething(MyAbstractObject myObject)
样品方法:
@MyAnnotation
public void toBeIntercepted(MyObjectExtendingMyAbstractObject x)
它仅与注释一起使用。但是我不得不从丑陋的关节点中提取参数。现在我正在改变它。
这会产生以下异常:
Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:319) ~[aspectjweaver-1.9.4.jar:na]
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:227) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at org.springframework.aop.aspectj.AspectJExpressionPointcut.obtainPointcutExpression(AspectJExpressionPointcut.java:198) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:177) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:225) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]```
解决方案
args()
格式不正确。
该切入点表达式的正确格式如下
@Before("@annotation(mypackage.MyAnnotation) && args(myObject,..)")
public void doSomething(MyAbstractObject myObject) {}
推荐阅读
- flutter - Google 认证和 Facebook 认证现有用户
- python - 基于变量动态构建字典
- react-native - 如何在 React Native 中的 DateTimePicker 上传输参数?
- reactjs - 如何访问嵌套导航器以及如何正确设置身份验证流程
- android - Android 11 应用程序在以空指针异常打开时崩溃
- spring - 本机查询的 Spring 数据投影未映射到接口
- flutter - Flutter TextField在键盘上溢出底部
- c++ - 编译g ++时未链接实现文件
- image - DeepSort + Volov5算法的数据生成方法
- php - PHP 速记 if echo else assign variable