一类特定方法的切入点

时间:2019-01-11 03:27:27

标签: java aop aspectj

据我所知,有两种方法可以实现这一目标:

  1. 使用基于注释的切入点:
    只需向这些方法添加注释,然后在切入点表达式中使用@annotation。
    @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional)")
    public void myPointcut() {}
    
  2. 使用许多执行表达式
    @Pointcut("execution(* me.mypackage.MyClass.method0(*))||" +
              "execution(* me.mypackage.MyClass.method1(*))||"+
              "execution(* me.mypackage.MyClass.method2(*))||"+
              "execution(* me.mypackage.MyClass.method3(*))||"+
              "execution(* me.mypackage.MyClass.method4(*))")
    public void myPointcut() {}
    

第一种方法应该方便得多。但是,我不想向这些方法添加其他自定义注释。在我的情况下,我只想使这些方法的切入点“不可见”。
因此,我必须使用第二种方法。但是对我来说似乎太复杂了,有什么办法可以缩短这种表达方式吗?

1 个答案:

答案 0 :(得分:0)

只需合并并执行,它就可以正常工作。

@Pointcut("within(me.packages.TargetClass)")
public void classPointcut() {}
@Pointcut("execution(* method1(*)) && execution(* method2)")
public void methodPointcut() {}

并绑定建议,例如,围绕建议:

@Around("classPointcut() && methodPointcut()")
public Object foo(ProceedingJoinPoint pjp)
相关问题