1

使用 AspectJ 自定义注释

自定义注释

@Documented
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface Loggable {

String getString() default "";
boolean print() default true;

}

方面

@Before("execution(@Loggable  * *.*(..))")
public void myBeforeAdvice(JoinPoint jp) {

    System.out.println("Before List");

    Object[] parameterList = jp.getArgs();

    System.out.println("Length=="+ parameterList.length);

    System.out.println("After List");

    //return returnVal;
}

自定义注释使用

@Loggable(getString="Custom", print=true)
public String run(){

    System.out.println("Inside Run Method");

    return "Returning Method Run!";
}

OutPut

Before List

Length==0

After List

Inside Run Method

我如何获得自定义注释的参数,因为我根据参数做出了一些决定!i.e print may be true / false

让我知道 !

4

1 回答 1

1

before(Loggable l) : call(@Loggable * *.*(..)) && @annotation(l);

认为它与基于注释的切入点类似。

于 2013-10-07T15:14:02.307 回答