包中每种方法的时间计算。

时间:2016-11-24 17:49:52

标签: java spring

有没有办法计算包中每个方法的时间(不包含类)?而不是每个方法的包开始时间和结束时间。还有其他选择吗?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

使用AspectJ,您可以使用.around()注释:

@Aspect
public class TimedAnnotation {
    @Around("execution(* *(..)) && @annotation(TimedMethod)")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long start = System.currentTimeMillis();
        try {

            Object p = point.proceed();

            return p;
        }
        finally {
            System.out.println(System.currentTimeMillis() - start);
        }
    }
}

您仍然需要为每种方法添加此注释:

@TimedMethod
public void doSomething() {
...
}

您需要将AspectJ添加到您的pom.xml中:

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.7.3</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.9</version>
    </dependency>