java - 识别方法的不同执行(执行对象)?

标签 java aop aspectj

我有一些(静态的)Java 方法。

我有一个切入点可以在执行这些方法时触发:

pointcut calculation() : execution(* myMethod_*(..));

现在我想分别测量每次执行的时间。 问题是执行可能随时触发,而其他执行仍在运行。 我想到了两个建议,before()after(),它们标识调用者以管理不同调用者的计时器。

before() : calculation() {

}

after() : calculation() {

}

我该如何实现?

最佳答案

around() 建议应该有效:

   Object around() : calculation() {
        long start = System.nanoTime();
        Object result = proceed();
        long end = System.nanoTime();
        logger.info(String.format("%s took %d ns", thisJoinPointStaticPart.getSignature(),
                (end - start)));
        return result;
    }

关于java - 识别方法的不同执行(执行对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800339/

相关文章:

java - Spring事务中数据未提交到DB

java - 在 Java 中转置和取消转置字符串

java - 如何触发自定义 Intent ?

java - 尚未应用带有 AspectJ 抛出建议的删除向导指标

java - 任何 AspectJ 代码生成库(如 Sun 的 Java 代码生成代码模型)?

java - 远程管理接口(interface) : How threads are created?

java - 将 <String, String> 映射到 TreeMap<Integer, String>

spring - 为什么Spring AOP在某些情况下会拦截 protected 方法?

ruby - 使用 Ruby 实现类似于面向方面的嵌套过滤器?

spring - 建议 javax.persistence.EntityManager 与 AspectJ 不起作用