用法示例:
我想在类字段上添加一个自定义注释@MyContainer,然后在所有这些字段上自动添加相关的Hibernate注释(取决于字段类型和属性).
另外,我需要将JAXB XmlType注释添加到类中,并将类型名称基于类名.
我还想要根据其类型等向字段添加注释.
所有添加的注释都应该在运行时可用(因此hibernate / JAXB可以找到它们).
我知道以下选项:
我想在类字段上添加一个自定义注释@MyContainer,然后在所有这些字段上自动添加相关的Hibernate注释(取决于字段类型和属性).
另外,我需要将JAXB XmlType注释添加到类中,并将类型名称基于类名.
我还想要根据其类型等向字段添加注释.
所有添加的注释都应该在运行时可用(因此hibernate / JAXB可以找到它们).
我知道以下选项:
>预处理类源(错误选项)
>使用javax.annotation.processing API进行编译期间的处理
>使用Java Assist等工具进行编译后操作
>使用java.lang.instrument API加载类时的操作
>使用AspectJ(功能不够强大)
我的主要目标是:
>在类和源之间保持同步以进行调试
>支持Maven和IDE(Eclipse / Intellij)的工作
如果已经完成此类工作的人能够为这样的任务推荐最佳方法(也许还有潜在的陷阱),我将不胜感激.
解决方法
我认为预处理类源应该是您的首选方式.这使您可以使源与已编译的类同步,这对于您提到的调试很有用.但它也适用于版本控制,因为您可以检入那些生成的注释.如果在编译期间运行它,那么跟踪工具中的问题也要困难得多.在generate-sources阶段运行代码生成时,IDE支持也应该没有问题.
编辑:
快速搜索产生了一些关于程序化java源代码修改的信息
using the eclipse jdt或some thing in netbeans.但这可能值得更多的研究或自己的问题.