[英]Spring RestTemplate ignores XML annoations (eg @XmlAttribute)?
我正在使用spring-web
将POST
xml请求发送到Web服务。 但是我的Xml bean请求没有呈现我用jaxb
属性定义的方式:
//this class is autogenerated with xsdtojava from *.xsd files
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "myRequest")
public class ServletRequest {
@XmlAttribute(name = "age")
private int age;
}
用法:
ServletRequest req = new ServletRequest();
req.setAge(20);
restTemplateBuilder.build().postForEntity(url, new HttpEntity<>(req), MyRsp.class);
发送的结果xml:
<ServletRequest>
<age>20</age>
</ServletRequest>
问题: @XmlRootElement
名称和@XmlAttribute
批注似乎都被忽略了。 为什么?
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson() {
return new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder builder) {
builder.modules(new JaxbAnnotationModule());
}
};
}
甚至使用java8时更短:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson() {
return (builder) -> builder.modules(new JaxbAnnotationModule());
}
从杰克逊2.9.0
这是核心杰克逊库的一部分。
在此之前,您必须添加:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.8.x</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.