使用 spring aop 分析 jar 文件中的方法未发生

Profile a method in the jar file using spring aop is not happening

我的要求是分析弹性搜索 java api get 方法来查找执行 timings.I 已经编写了 Spring AOP 方面来执行此操作

@Aspect
@Component
public class PerformanceAspect {

  private final Logger LOGGER = LoggerFactory
        .getLogger(PerformanceAspect.class);

  @Pointcut("execution(*  org.elasticsearch.action..ActionRequestBuilder.get(..))")
  public void getESMethod() {}


  @Around("getESMethod()")
  public void profile(ProceedingJoinPoint pjp) {
    long start = System.currentTimeMillis();
    LOGGER.info("Calling the get method..");
    try {
        pjp.proceed();
        LOGGER.info("Method execution completed");
        long elapsedTime = System.currentTimeMillis() - start;
        LOGGER.info("Method execution time "+elapsedTime);
    } catch (Throwable e) {
        e.printStackTrace();
    }

  }

}

ActionRequestBuilderelasticsearch.jar 中,由 maven 加载。我在 Maven 中使用 spring 启动。但看起来这方面根本没有得到执行。是因为这个 ActionRequestBuilder 在另一个 JAR 文件中吗?如果我将切入点更改为项目中的任何其他方法,它工作正常。我该如何解决这个问题?

Spring AOP 仅适用于 Spring Beans,即 classes 由 Spring 实例化和维护。这似乎是一个非 spring 核心 ElasticSearch class。您需要至少向上移动一级并找出 Spring 胶水代码调用此 class 的内容,重写切入点以指向 Spring 胶水代码。

但我什至不确定这是否有效,因为 Spring 数据使用它自己的代理魔法,所以我不确定您是否可以将 AOP 代理应用于这些。最安全的做法是将切入点指向调用 ElasticSearch

的代码