是否主动向方法添加Java注释?

时间:2011-01-28 10:04:20

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

有没有办法修改.class文件以便为某些方法添加Java注释?基本上我想遍历jar文件中的每个类文件的方法并注释某些类文件。请注意,在使用jar文件时,这不是在运行时。相反,在我完成之后,我想要使用注释修改类文件。

我可以访问源代码,所以如果有一个自动源代码修饰符,那也可以...

我假设我需要JavassistASM等工具。如果是这样,我应该使用哪一个,我将如何进行呢?

2 个答案:

答案 0 :(得分:8)

实际上,这是AspectJ的经典用例:

declare @method : public * BankAccount+.*(..) : @Secured(role="supervisor")

虽然我会授予您直接字节代码操作功能更强大的功能,但AspectJ更加用户友好,当您做错事时它会立即为您提供编译器警告。

此外,如果您使用Load Time Weaving,则可以保持原始库jar不变,因为编织发生在类加载时。

<强>参考:

答案 1 :(得分:4)

谷歌搜索了一个小时左右this article,这似乎完全回答了我的问题:使用ASM。要使用更改的字节码编写类文件,请使用ClassWriter

嗯,我猜是时候开始工作了。 :)