Java在运行时编辑注释属性

时间:2015-07-16 15:27:56

标签: java spring spring-mvc reflection annotations

有没有办法在运行时修改Field注释的属性?您不仅可以在任何一个点从Field获取注释对象,而且在将来获得相同的注释时,它将使用新值进行更新。

我的任务是能够在运行时编译Java文件,然后在应用程序中使用该类。我已经完成了,但唯一的问题是,在标准的Java应用程序中,自定义注释会被保存,但是在Tomcat 7上运行的Spring应用程序上运行时,它们会因某种原因被剥离。这就是内存编译BTW,没有文件是在这个过程中创建的。

我找不到任何方法来解决这个问题,所以我决定再次解析Java文件,并在我需要的任何字段中添加注释。我想出了如何将一个注释添加到一个以前没有通过一些黑客攻击的字段,但现在我需要配置它,因为注释有一些属性,几个布尔值和一个int。

我已经研究了很多StackOverflow问题中提供的几种方法,但它们都修改了通过反射获得的注释对象,如果我在另一种方法中尝试获得相同的注释,则重置它的值。任何对这个问题的见解都将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于将来查看此内容的任何人,我首先编译我的代码并在将字节码创建到类之前获取字节码,从而解决了这个问题。然后我使用Javassist在运行时添加注释。之后我通过自定义类加载器将它编译成一个类,它使我得到了Class对象而没有将它加载到系统类加载器中。