我想在 Java 中使用方面,但它有一些资源限制,因此我无法使用 Spring 方面,因为它占用的内存很大。
所以我想要在没有 Spring 的情况下做的是创建一个自定义注释,它将触发带注释的方法的一个方面。
我有一些实现,但我看不到方法运行时触发的 Apect。这就是我所拥有的:
我的自定义注释
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyCustomAnnotation {}
使用注释的位置
@MyCustomAnnotation
public void someMethod() {
System.out.println("Method runnning...");
}
我创建的方面
@Aspect
public class MyAspect {
@Pointcut("execution(* *(..))")
public void callAt() {}
@Around(("callAt()"))
public void doSomething(ProceedingJoinPoint point) {
point.proceed();
System.out.println("Aspect is runnning...");
}
我的 gradle 文件中的配置
dependencies {
classpath "gradle.plugin.aspectj:gradle-aspectj:0.1.6"
}
apply plugin: 'aspectj-gradle'
compile 'org.aspectj:aspectjrt:1.9.1'
compile 'org.aspectj:aspectjweaver:1.9.1'
我不知道为什么它没有被触发,当应用程序运行时,我在控制台中看不到来自该方面的消息。 知道我缺少什么吗?
最佳答案
您是否尝试过类似的操作:
@Around("@annotation(mycustomannotation.package.MyCustomAnnotation)")
其中 mycustomannotation.package.MyCustomAnnotation 是您创建的注释的接口(interface)
关于java - 仅使用 AspectJ 将切面应用于带注释的方法(不使用 Spring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52113214/