У меня есть аннотация:Как обрабатывать атрибуты перехватчика связывания
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Example {
}
и класс перехватчика для его обработки:
@Interceptor
@Example
public class ExampleInterceptor implements Serializable {
...
}
Я хотел бы добавить текст параметра:
public @interface Example {
String text();
}
Но я не знаю, как обращаться с параметром в классе перехватчика. Как изменить аннотацию класса?
@Interceptor
@Example(text=???????)
public class ExampleInterceptor implements Serializable {
...
}
Если я пишу @Example(text="my text")
перехватчик вызывается только тогда, когда метод/класс помечается @Example(text="my text")
. Но я хочу, чтобы перехватчик вызывался независимо по значению параметра - @Example(text="other text")
.
И как получить значение параметра? Должен ли я использовать рефлексию или есть лучший способ?
Для получения значения аннотации по методу перехвата в перехватчике: InvocationContext ctx; Пример example = ctx.getMethod(). GetAnnotation (Example.class); Строковое значение = example.value(); – dbricman
Что делать, если я не хочу добавлять метод по умолчанию, чтобы принудительно использовать все применения аннотации для указания значения? В моем случае это значение перечисления вместо строки, поэтому нет смысла помещать @Example (MyEnum.SPECIFIC_VALUE) в класс перехватчика. – Mano