基于Java注释的代码注入,无需更改带注释的代码

时间:2015-06-23 13:10:11

标签: java annotations

有一个Java应用程序,除了注释类或方法(使用自定义或现有注释)之外,我无权更改Java代码。 仅使用注释和注释我必须调用代码,这意味着每次创建带注释的类的实例或调用带注释的方法时,都必须执行一些额外的Java代码(例如,调用REST Web服务)。所以我的问题是:我该怎么做?

为了防止我已经检查过的答案,我会给你一些似乎有用但不够令人满意的解决方案。

  1. 面向方面编程(例如AspectJ)可以这样做(在调用带注释的方法之前和之后执行代码),但我真的不想要运行时开销。

  2. 使用实际使用反射的here提供的解决方案。这正是我所需要的只是它改变了初始代码而不仅仅是注释,所以我不能使用它。

  3. 使用注释处理器按照最后一个答案的建议here生成源代码。但是,这仍然意味着我将改变我不想要的源代码。

  4. 我真正想要的是一种简单地包含Java文件的方法,每次触发带注释的元素时,该文件都会以某种方式执行某些Java行。

1 个答案:

答案 0 :(得分:0)

为什么不完全跳过注释并使用byteman在运行时将代码注入代码的入口点。

我不得不同意上述评论,但这种限制是荒谬的,应该受到挑战。

相关问题