Как создать пользовательскую аннотацию 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;
        }
    }
}

еще пример : здесь