0

我有一个带有这样注释的方法:

@Timed(value="timed", extraTags={"account", Account.getById(@PathVariable("id")}
public Info getInfo(@PathVariable("id") String id) {
    return Info.getById(id);
}

以上当然行不通。希望你能看到我正在尝试做的事情。给定路径上的 id,将帐户标签设置为 Account.getById() 返回的值的正确语法是什么?

4

2 回答 2

3

不可能以您期望的方式或任何其他注释方式传递@Timed。传递给任何注解的值必须是编译时间常数。

编译时间常数类似于:

private static final String tag = "account";

返回的值Account.getById()不是编译时间常数,因此不能被注释接受。

于 2019-05-01T11:50:48.647 回答
0

我不相信您将能够使用@Timed注释来完成您正在做的事情,但您可以手动计时该方法并做您想做的事情。这是一个例子:

.
.
.
@Autowired MeterRegistry meterRegistry;
.
.
.
public Info getInfo(@PathVariable("id") String id) {
    final Sample sample = Timer.start(meterRegistry);

    final Info info = Info.getById(id);

    sample.stop(Timer.builder("timed")
                     .tag("account", Account.getById(id)
                     .register(meterRegistry));
    return info;
}
于 2019-05-21T13:52:21.523 回答