繁体   English   中英

Spring RestTemplate会忽略XML注释(例如@XmlAttribute)吗?

[英]Spring RestTemplate ignores XML annoations (eg @XmlAttribute)?

我正在使用spring-webPOST 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM