繁体   English   中英

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

[英]Java annotation-based code injection without altering the annotated code

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

为了避免我已经检查过的答案,我将为您提供一些似乎可行但不够令人满意的解决方案。

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

  2. 使用此处提供的解决方案,该解决方案实际上使用反射。 这正是我所需要的,不仅仅是注释,它可以进一步更改初始代码,因此我无法使用它。

  3. 如尽量使用标注处理器源代码生成在这里通过的最后答案。 但是,这仍然意味着我将更改不需要的源代码。

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

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

不过,我必须同意上述意见,即这种限制是荒谬的,应该受到挑战。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM