java - 仅使用 AspectJ 将切面应用于带注释的方法(不使用 Spring)

标签 java gradle aop aspectj

我想在 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/

相关文章:

java - IntelliJ IDEA - 错误 : JavaFX runtime components are missing,,需要运行此应用程序

java - Android Studio无法建立我的APK?

android - 如何在Android上为不同的用户显示不同的UI?

java - 如何使用 AspectJ 和 log4j 原始日志行号?

java - 即使使用关键字 "after",AOP 方面也会在给定方法之前执行?

java - 打破循环或递增计数器的更快方法?

java - 资源解析器异常 : Cannot resolve element with ID Body

java - 程序类型已经存在 : org. codehaus.jackson

java - Spring AOP 在 Tomcat 和 tcserver 中不起作用

java - 返回对象数组时出现意外类型错误