Как создать пользовательскую аннотацию java для параметров метода журнала
Я пишу приложение JavaEE, и я хотел бы использовать и создавать пользовательские аннотации, которые будут регистрировать данные, когда будет вызван аннотированный метод. Все, что я хотел бы сделать, это то, что при вызове аннотированного метода код перебирает все переданные параметры метода и записывает стандартные ключи и значения выходных параметров.
пример:
public class Test {
@LogMethodData
public int sum(int first, int second) {
return first + second;
}
}
Я хотел бы добиться того, что когда пользовательский метод будет аннотирован @LogMethodData, этот код будет позаботьтесь и запишите параметры метода в стандартный вывод (что - то вроде "данные метода: первый - 4, второй-5", если параметр первый содержит значение 4, а параметр второй содержит значение 5), независимо от количества переданных параметров методам.
С уважением, Dahakka
1 ответов
нет необходимости определять собственную аннотацию, вы можете использовать @Interceptors
Аннотация В контейнере EE как пояснил здесь.
@Interceptors(LoggingInterceptor.class)
в перехватчике вы получите контекст, содержащий ваши параметры
public class LoggingInterceptor {
...
@AroundInvoke
public Object modifyGreeting(InvocationContext ctx) throws Exception {
....
Object[] parameters = ctx.getParameters();
try {
return ctx.proceed();
} catch (Exception e) {
logger.warning("Error calling ctx.proceed in modifyGreeting()");
return null;
}
}
}
еще пример : здесь