在运行时在java中添加额外的代码

时间:2012-06-14 08:43:09

标签: java-bytecode-asm bytecode-manipulation aspect

我正在开发一个库,我需要在运行时为我的一些对象方法添加额外的代码。这里有两点。首先,我想添加额外代码的程序是由其他人编写的,我不想编辑它。第二,我的工作与在调用方法之前添加方面非常相似。

在互联网上搜索和阅读后,我发现了许多框架,如aspectj,ASPECTWERKZ等可以完成这项工作,但是例如aspectj(在spring上下文中使用时)的问题是它没有提供你有任何API在运行时进行编织。 我还发现有一些像ASM和javassist等的库,但是它们非常通用且难以学习,而且我的工作更有可能是方面。

那你有什么建议?那里有什么好的图书馆吗?我之前提到的上面的库我错了吗?请帮助!

1 个答案:

答案 0 :(得分:0)

使用AspectJ,您可以在运行时加载类时应用方面。见Load-Time Weaving documentation。或者,您不必更改旧代码,也可以在编译时应用方面。