任意位置参数的切入点表达式

dom*_*arr 5 java aspectj

@Before(value = "@annotation(OwnershipCheck) && args(enquiry)")
public void checkOwnership(Enquiry enquiry) throws Throwable
{
}
Run Code Online (Sandbox Code Playgroud)

上面的表达式将匹配任何带有 OwnershipCheck 注释的方法,并将查询作为参数。

如何使用 OwnershipCheck 注释为任何方法扩展此表达式,并在有或没有其他参数的任何位置进行查询。

也就是说,需要匹配

@OwnershipCheck    
public void one(Enquiry enquiry)

@OwnershipCheck
public void two(Object obj, Enquiry enquiry)

@OwnershipCheck
public void three(Enquiry enquiry, Object ob)

@OwnershipCheck
public void four(Object obj, Enquiry enquiry, Object other)
Run Code Online (Sandbox Code Playgroud)

And*_*erg 0

尝试这个:

@Before(value = "@annotation(OwnershipCheck) && args(.., enquiry, ..)")
public void checkOwnership(Enquiry enquiry) throws Throwable
{ }
Run Code Online (Sandbox Code Playgroud)

但我不确定@AspectJ 是否支持这一点。因此,您可能需要这样做:

before(Enquiry enquiry) : 
    execution(@OwnershipCheck * *(.., Enquiry, ..)) && args(.., enquiry, ..) { }
Run Code Online (Sandbox Code Playgroud)