我们有一个用例来衡量我们代码库中某些关键功能的执行时间。目前,这是通过许多样板代码完成的:
void foo() {
Stopwatch stopwatch = Stopwatch.createdStarted();
// actual work...
Duration elapsed = stopwatch.elapsed();
logger.log("Time taken for foo(): %s", elapsed);
}
这需要Stopwatch + Logger样板,该样板在我们的代码库中重复很多。使用自定义注释简化此操作是否可行?目标是拥有以下自定义注释,这些注释应隐式执行先前代码所做的事情。
@Timer
void foo() {
// actual work...
}
这是否在Java注释的能力之内?我已经考虑过为自定义批注实现Processor,但是我坚持如何设置它,以便带批注的“ foo()”调用隐式生成并执行计时器代码。