需要从绑定文件中生成 package-info.java 中的 JAXB 注释
Posted
技术标签:
【中文标题】需要从绑定文件中生成 package-info.java 中的 JAXB 注释【英文标题】:Need to generate JAXB annotions in package-info.java from binding file 【发布时间】:2011-08-25 04:34:34 【问题描述】:我有一个XmlAdapter
的注解,我需要将它放入package-info.java 中。问题是,我们的package-info.java 是从XJC 自动生成的。有没有办法使用 JAXB 绑定文件在生成时自动将这个注解添加到 package-info.java 中?
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters
(
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=Adapter.class,type=Original.class)
)
感谢您的帮助!
【问题讨论】:
【参考方案1】:不幸的是,在外部绑定文件中定义自定义元素时,上面的优雅语法不起作用。 Annotate Plugin 为您提供了一种从 XJC 绑定自定义中读取注释并自动添加到您的 XmlAdapter 类中的方法。 因此,您的适配器类将被添加到您的 package-info.java。
<jaxb:bindings
version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:annox="http://annox.dev.java.net"
jaxb:extensionBindingPrefixes="annox">
<jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
...
<jaxb:bindings node="xs:complexType[@name='...']/xs:sequence/xs:element[@name='name']">
<annox:annotate>
<annox:annotate
annox:class="org.hibernate.search.annotations.FieldBridge"
impl="com.acme.foo.MyFieldBridge">
<annox:annotate annox:field="params">
<annox:annotate annox:class="org.hibernate.search.annotations.Parameter"
name="foo"
value="bar"/>
</annox:annotate>
</annox:annotate>
</annox:annotate>
</jaxb:bindings>
...
</jaxb:bindings>
</jaxb:bindings>
生产:
@FieldBridge(impl = com.acme.foo.MyFieldBridge.class, params =
@Parameter(name = "foo", value = "bar")
)
另一种方法是将绑定添加到您的架构:直接在架构文件中:
见Annotate Plugin
【讨论】:
hmmmm...我有点困惑..您是说上面产生的输出将在我的适配器或 package-info.java 中产生? 在您的 package-info.java 中,但您可以为您的适配器执行此操作 除了使用适配器之外,还有其他方法可以使用绑定文件进行类替换吗?以上是关于需要从绑定文件中生成 package-info.java 中的 JAXB 注释的主要内容,如果未能解决你的问题,请参考以下文章
[YOLO专题-15]:YOLO V5 - 如何从视频文件中生成训练样本的原始图片
如何使用存储过程在 SQL Server 中生成表的数据脚本文件?