@TImed с дополнительными тегами и @PathVariable - PullRequest
0 голосов
/ 01 мая 2019

У меня есть метод с аннотацией, такой как:

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

Выше, конечно, не работает.Надеюсь, вы увидите, что я пытаюсь сделать.Каков правильный синтаксис для установки тега account на значение, возвращаемое Account.getById () с указанием идентификатора пути?

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

НЕ можно передавать значения так, как вы ожидаете, до @Timed или любой другой аннотации по этому вопросу.Значения, передаваемые в любую аннотацию, должны быть постоянной времени компиляции.

Постоянная времени компиляции выглядит примерно так:

private static final String tag = "account";

Значение, возвращаемое Account.getById(), не является постоянной времени компиляции и, следовательно,не может быть принято аннотацией.

0 голосов
/ 21 мая 2019

Я не верю, что вы сможете использовать аннотацию @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;
}
...