为什么下面的代码给我 "adviceDidNotMatch"
Why is the below code giving me "adviceDidNotMatch"
我正在努力学习 AspectJ
,到目前为止,我已经很好地适应了这些概念。所以在这里我试图编写方面 class 以对对象进行验证。但是下面的代码给了我 adviceDidNotMatch
东西。
before(com.message.pojo.Entity entity) : call(*public com.message.helper.Processor.process(com.message.pojo.Entity))
&& args(entity)
&& target(com.message.helper.MessageProcessor){
ValidationUtil validation = new ValidationUtil();
validation.validate(entity);
}
现在我检查的所有合格名称都是正确的。请查看我的 java 项目结构的屏幕截图。
[
你的切入点有一点语法问题:不是 call(* public
,应该是 call(public *
,然后就可以了。
顺便说一句,您还可以通过以本机 AspectJ 语法导入来替换完全限定的 class 名称。 FQDN 仅在 annotation-based @AspectJ 语法中是必需的。假设我们从您的屏幕截图中谈论 ValidationAspect
,对于同一包中的两个 class,您甚至不需要任何导入。像这样尝试:
package com.message.helper;
import com.message.pojo.Entity;
public aspect ValidationAspect {
before(Entity entity) :
call(public * Processor.process(Entity)) &&
args(entity) &&
target(MessageProcessor)
{
ValidationUtil validation = new ValidationUtil();
validation.validate(entity);
}
}
我正在努力学习 AspectJ
,到目前为止,我已经很好地适应了这些概念。所以在这里我试图编写方面 class 以对对象进行验证。但是下面的代码给了我 adviceDidNotMatch
东西。
before(com.message.pojo.Entity entity) : call(*public com.message.helper.Processor.process(com.message.pojo.Entity))
&& args(entity)
&& target(com.message.helper.MessageProcessor){
ValidationUtil validation = new ValidationUtil();
validation.validate(entity);
}
现在我检查的所有合格名称都是正确的。请查看我的 java 项目结构的屏幕截图。
[
你的切入点有一点语法问题:不是 call(* public
,应该是 call(public *
,然后就可以了。
顺便说一句,您还可以通过以本机 AspectJ 语法导入来替换完全限定的 class 名称。 FQDN 仅在 annotation-based @AspectJ 语法中是必需的。假设我们从您的屏幕截图中谈论 ValidationAspect
,对于同一包中的两个 class,您甚至不需要任何导入。像这样尝试:
package com.message.helper;
import com.message.pojo.Entity;
public aspect ValidationAspect {
before(Entity entity) :
call(public * Processor.process(Entity)) &&
args(entity) &&
target(MessageProcessor)
{
ValidationUtil validation = new ValidationUtil();
validation.validate(entity);
}
}