我的应用程序在 Java8 Spring MVC 上,我正在将其迁移到 Java11 Spring Boot 应用程序。
我使用 Jaxb 从.xsd
文件中生成的类用于输入 JSON 请求的模型类,其中传入有效负载之一是snake_case
基于的,并且生成的类位于camelCase
. 其他端点在 CamelCase 或 PascalCase 中工作正常。
在旧版本中,输入有效负载用于映射到模型类,但在 Spring Boot 中,我发现 snake_case 一的有效负载属性为空。
总而言之,event_name
变成eventName
在 java 类中并且不选取值是event_name
有效负载中的属性。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
...
...
<xsd:element name="sampleClassName">
<xsd:complexType>
<xsd:sequence>
...
<xsd:element name="event_name" type="xsd:string" minOccurs="1"></xsd:element>
...
</xsd:sequence>
</xsd:complexType>
</xsd:element>
...
</xsd:schema>
自动生成的类得到以下注解:
@XmlElement(name = "event_name", required = true)
protected String eventName;
我在 gradle 中的依赖项:
compile "com.fasterxml.jackson.core:jackson-databind:2.8.9"
xjc "com.sun.xml.bind:jaxb-impl:2.2.6"
xjc "com.sun.xml.bind:jaxb-xjc:2.2.6"
compile "javax.xml.bind:jaxb-api:2.2.6"
请提出可能出了什么问题。我参考了其他帖子并尝试了以下依赖项,但没有运气。
compile "com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.4"
compile "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.4"
compile "com.fasterxml.jackson.core:jackson-core:2.11.4"
compile "com.fasterxml.jackson.core:jackson-annotations:2.9.4"
compile "com.fasterxml.jackson.core:jackson-databind:2.11.4"
compile(group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.6.3', classifier: 'javadoc')