man*_*nub 9 java jaxb2 maven jaxb2-basics
我正在使用的代码是使用jaxb2-maven-pluginfrom org.codehaus.mojo从XSD架构生成Java类.我正在寻找一种方法来自动实现equals()和hashCode()这些类的方法,但似乎没有一种方式.我知道还有其他JAXB2 Maven插件可以做到这一点(例如http://confluence.highsource.org/display/J2B/Home),但是我想知道你们之前是否遇到过这个问题,如果有办法的话修理它.我正在使用xjc目标生成类.
lex*_*ore 14
您提到的JAXB2基础知识不属于maven-jaxb2-plugin它,它是一组独立的JAXB 2.x插件,可以与XJC一起使用 - jaxb2-maven-plugin或者其他任何东西.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>
<argument>-Xequals</argument>
<argument>-XhashCode</argument>
</arguments>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.11.1</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我想问的是 - 为什么不使用maven-jaxb2-plugin?与Codehaus插件相比,它具有更多功能 - 包括对JAXB2插件的配置支持.
小智 6
这是最简单的方法。请根据您的要求更新版本。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>JAXB generate content classes</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<schemaDirectory>${project.basedir}/src/main/resources/schema</schemaDirectory>
<outputDirectory>${project.build.directory}/generated-sources/jaxb</outputDirectory>
<schemaFiles>**/*.xsd</schemaFiles>
<packageName>com.lexus.web.content.model</packageName>
<arguments>-Xcommons-lang</arguments>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我强烈反对在代码中使用JAXB生成的类作为业务对象.由JAXB生成的类是bean,它们本质上是将元素信息从xml文件移动到bean的字段.我个人总是让我的SOAP服务将这些生成的bean类转换为我的实际业务对象,因为XML-> Java,反之亦然,转换不是一直是黑白的.请注意,这是我个人的观点,并希望其他人能够在这种情况下权衡他们的行为.
要回答你的问题,请使用不同的插件,或者只使用IDE来制作一些equals和hashCode方法.
希望有所帮助.
编辑:
道歉,我忘记了我的理由.让我们说在项目的下一个版本中,您希望为JAXB生成的类添加更多行为,但也希望对模式进行一些更改.现在,您正在重新生成JAXB生成的类,重新使用旧行为,并使您的应用程序更容易受到我认为的错误的影响.JAXB生成的类应该反映您的XML模式类型(以及您的SOAP消息)而不是您的业务逻辑.希望有道理.
| 归档时间: |
|
| 查看次数: |
12529 次 |
| 最近记录: |