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

Epa*_*aga 3 java annotations bytecode-manipulation java-bytecode-asm

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

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

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

Sea*_*oyd 8

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

declare @method : public * BankAccount+.*(..) : @Secured(role="supervisor")
Run Code Online (Sandbox Code Playgroud)

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

此外,如果使用" 加载时间编织",则可以保持原始库jar不变,因为编织发生在类加载时.

参考: