[英]Java annotation-based code injection without altering the annotated code
有一个Java应用程序,除了注释类或方法(带有自定义或现有注释)之外,我无权更改Java代码。 仅使用注释和注释,我必须调用代码,这意味着每次创建带注释的类的实例或调用带注释的方法时,都必须执行一些额外的Java代码(例如,对REST Webservice的调用)。 所以我的问题是:我该怎么做?
为了避免我已经检查过的答案,我将为您提供一些似乎可行但不够令人满意的解决方案。
面向方面的编程(例如AspectJ)可以做到这一点(在带注释的方法调用之前和之后执行代码),但我真的不希望运行时开销。
使用此处提供的解决方案,该解决方案实际上使用反射。 这正是我所需要的,不仅仅是注释,它可以进一步更改初始代码,因此我无法使用它。
如尽量使用标注处理器源代码生成在这里通过的最后答案。 但是,这仍然意味着我将更改不需要的源代码。
我真正想要的是一种简单地包含Java文件的方法,该文件每次触发带注释的元素时都会以某种方式执行一些Java行。
为什么不完全跳过批注并使用byteman在运行时将代码注入代码的入口点。
不过,我必须同意上述意见,即这种限制是荒谬的,应该受到挑战。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.