我正在努力学习AspectJ
,到目前为止,我已经习惯了这些概念。所以这里我试图在Object上编写用于验证的方面类。但是下面的代码给了我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项目结构的屏幕截图。
[
答案 0 :(得分:0)
您的切入点中存在一些语法问题:而不是call(* public
它应该是call(public *
,而是有效。
顺便说一句,您还可以通过本机AspectJ语法中的导入替换完全限定的类名。 FQDN仅在基于注释的@AspectJ语法中是必需的。假设我们从您的屏幕截图中讨论ValidationAspect
,对于同一个包中的两个类,您甚至不需要任何导入。试试这样:
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);
}
}