gpt4 book ai didi

java - Spring AOP切点错误

转载 作者:行者123 更新时间:2023-12-01 14:40:53 25 4
gpt4 key购买 nike

我试图捕获重写 spring 的 validate 方法后出现的所有错误。

我收到以下错误

切入点格式不正确:在字符位置 135 处需要 ')'

我尝试了很多组合,例如在前后添加“)”并删除,但仍然遇到相同的错误。我正在学习 Spring,所以不确定这是否正是实现 aop 的方法。谁能告诉我哪里错了或者纠正我

这是实现验证方法的类

package com.myapplication.validations

public class MyValidate implements Validator{{

public boolean supports(Class<?> clazz) {
return MyValidate.class.equals(clazz);
}

public void validate(Object target, MyApplicationErrors errors) {

//all validations

}
}

现在在我的 spring application-context.xml 中编写以下 aop

<aop:aspectj-autoproxy />

<bean id="captureErrors"
class="com.myapplication.aop.CaptureAllErrors" />

<aop:aspect ref="captureErrors">

<aop:pointcut id="magicallyCaptureErrors"
expression="execution(* com.myapplication.validations.MyValidate.validate(Object, com.myapplication.allerrors.MyApplicationErrors )) and args(Object target, com.myapplication.allerrors.MyApplicationErrors errors)" />

<aop:after-returning pointcut-ref="magicallyCaptureErrors" method="getAllErrors"/>

</aop:aspect>

</aop:config>

我的捕获所有错误类如下

package com.myapplication.aop
@Aspect
@Component
public class CaptureAllErrors {


public void getAllErrors(Object target, com.myapplication.allerrors.MyApplicationErrors errors){


log.info(errors.toString());
}

}

最佳答案

表达式的第 135 个字符从这里开始:

and args(Object target
^

args() 切入点应列出参数的类型,而不是类型和名称。所以试试这个:

and args(Object, MyApplicationErrors)

还值得指出的是,整个 args() 表达式是多余的,因为 execution() 切入点也指定了方法参数所需的签名。

关于java - Spring AOP切点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com