如何创建自定义java注释以记录方法参数

时间:2014-01-07 13:53:45

标签: java annotations

我正在编写JavaEE应用程序,我想使用和创建自定义注释,它将在调用带注释的方法时记录数据。我想要做的是,当调用带注释的方法时,代码遍历所有传递的方法参数并写入标准输出参数键和值。

一些例子:

public class Test {

    @LogMethodData
    public int sum(int first, int second) {
        return first + second;
    }
}

我想实现,当一个自定义元文本将使用@LogMethodData注释时,后面的代码将注意并将传递的方法参数记录到标准输出(类似“方法数据:第一 - 4,第二 - 5”) if参数first包含值4,参数second包含值5),与方法传递参数的数量无关。

如果有人可以帮助我,我会很高兴,因为我一直在寻找解决方案,但我没有找到任何有用的东西。最后,我不熟悉这些事情。

此致 Dahakka

1 个答案:

答案 0 :(得分:4)

无需定义自己的注释,您可以使用EE容器as explained here中的@Interceptors注释。

@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;
        }
    }
}

另一个例子:here