如何在 Spring AspectJ 中使用 "declare" 指令?

How to use "declare" instruction within Spring AspectJ?

我在 Spring 4.2 项目中有一堆 类。 我想让所有这些都用@Xyz 注释进行注释。根据 AspectJ 文档,可以通过

完成
declare @type : x.y.z.* : @Xyz;

说明。 但是我不知道放在哪里。

我这边做了一些测试,经过一番折腾,寻找具体的实现。遗憾的是,@DeclareAnnotation 存在但未实现。

我们可以在这里看到。 https://github.com/eclipse/org.aspectj/blob/V1_8_9/docs/adk15ProgGuideDB/ataspectj.xml#L1017

1.5.3版本出现注解后,我还以为会实现呢。我的错。


原始答案(无效,AspectJ v1.8.9)。

首先您需要在配置中启用 AspectJ。例如Java配置:

@Configuration
@EnableAspectJAutoProxy
public class AopConfiguration {}

然后您使用 @DeclareAnnotation 注释创建一个新方面 :

@Aspect
public class XyzAspect {

    @DeclareAnnotation("x.y.z.*")
    @Xyz class XyzClass {}

    @DeclareAnnotation("x.y.z.MyClass.*(..)")
    @Xyz void xyzMethod() {}
}