没有为界面注释触发AspectJ注释切入点

时间:2011-07-06 09:48:28

标签: java spring annotations aspectj

如何创建一个切入点,该切入点与使用注释注释的方法或其接口方法使用注释进行注释相匹配?

public interface IService {
    @SomeAnnotation
    public void someMethod() { ... }
}

public class Service implements IService {
    public void someMethod() { ... }
}

我正在使用Spring AOP进行AspectJ autoproxying。但是,如果我定义一个像

这样的切入点
execution(public * *(..)) && @annotation(SomeAnnotation)

该建议未应用于服务上的someMethod方法。

匹配该方法的正确切入点是什么,只使用接口方法上有注释的事实?可能吗?

如果我将注释放在Service someMethod方法上,上面的切入点可行,但在我的情况下,这不是一个好的解决方案,因为注释是合同的一部分,因此必须是接口的一部分,而不是实现。

1 个答案:

答案 0 :(得分:1)

根据Java 5规范,非类型注释不会被继承,类型注释只有在具有@Inherited元注释的情况下才会被继承。

http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations-pointcuts-and-advice.html#annotation-inheritance-and-pointcut-matching