该切入点的格式问题是什么?

@Around("execution(* @myPackage.SafetyCritical.*(*))&& @annotation(deny)")


.i忘记添加:例外是“切入点格式不正确:期望'名称模式'(&&之前的最后一个括弧)

例如,切入点应与此类一起使用:

@SafetyCritical
public class SecureClass
{

    public SecureClass(){

    }
    @Deny
    public void isNotAllowed(){
        System.out.println("This should not happen");

    }

    @Allow
    public void isAllowed(){
        System.out.println("Allowed");

    }

}

最佳答案

编辑:

我认为您要查找的切入点表达式将更像这样:

@Around("@target(myPackage.SafetyCritical) && @annotation(denyPackage.Deny)")


@target指示符用于匹配标记有给定注释的类,并且@annotation指示符将过滤到使用denyPackage.Deny注释进行标注的方法。

同样,通过Spring Documentation regarding AspectJ support查看会很有帮助。

原版的:

为了匹配任意数量的参数,传递给execution切入点指示符的参数定义应为“ ..”

@Around("execution(* myPackage.SafetyCritical.*(..)) && @annotation(deny)")


Spring documentation有一些使用此示例表示接受任意数量参数的示例。

另外,我冒昧地猜想,在包名前面加'@'符号是不可接受的。您应该删除它。

关于java - 切入点格式不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8474183/

10-10 03:04