Search code examples
aopaspectjspring-aop

How to exclude methods from aspectj


I'm trying to exclude several methods from log files using aspectj (Im usong spring and Load-time weaving). Is there a way to list the excluded methods in the aop.xml? I know i can do this for full classes but I'm looking for specific methods. or can i make a list in the aspect class? Thanks


Solution

  • I don't know how to do it in an XML, but it's easy enough to do it in the aspects themselves, as pointcuts can be combined using boolean operators.

    Traditional aspectj syntax:

    pointcut whatIDontWantToMatch() : within(SomeClass+) || execution(* @SomeAnnotation *.*(..));
    pointcut whatIWantToMatch()     : execution(* some.pattern.here.*(..));
    pointcut allIWantToMatch()      : whatIWantToMatch() && ! whatIDontWantToMatch();
    

    @AspectJ syntax:

    @Pointcut("within(SomeClass+) || execution(* @SomeAnnotation *.*(..))")
    public void whatIDontWantToMatch(){}
    @Pointcut("execution(* some.pattern.here.*(..))")
    public void whatIWantToMatch(){}
    @Pointcut("whatIWantToMatch() && ! whatIDontWantToMatch()")
    public void allIWantToMatch(){}
    

    These are of course just samples. whatIDontWantToMatch() could also be composed of several pointcuts etc.