如何控制同一个包上两个切入点的执行顺序

时间:2013-02-27 09:58:53

标签: java spring aop

我的情况是存在通用切入点和其他几个特定切入点。 我想要的只是通用应该首先执行,然后才应该执行特定的。

通用点切割是,

  @Before("execution(public * com.java.*.data(..))") 

特定点数1

  @Before("execution(public * com.java.science.*.data(..))") 

特定点数2

  @Before("execution(public * com.java.history.*.data(..))") 

特定点数3

  @Before("execution(public * com.java.geography.*.data(..))")

Genric point cut应该首先执行,然后执行特定的。我可以控制它吗?

1 个答案:

答案 0 :(得分:1)

您可以使用@Order( value = ... )带注释的类@Aspect设置优先级:

@Aspect
@Order( value=0 )
public class MyFirstPointcut
{
    @Before("execution(public * com.java.*.data(..))")
    public void something(...) { ... }
}

@Aspect
@Order( value=1 )
public class MySecondPointcut
{
    @Before("execution(public * com.java.science.*.data(..))") 
    public void somethingElse(...) { ... }
}

...etc