作者:赵丽宏67171 | 来源:互联网 | 2023-01-29 06:06
我编写了一个spring boot应用程序来接受Http get Request并发送XML响应作为输出.我需要通过HTTP获取以下XML作为输出
235
345.0
而我的DTO课程如下,
@XmlRootElement(name = "response")
public class CgPayment {
@XmlElement
private String userId;
@XmlElement
private double amount;
@XmlElement
public String getUserId() {
return userId;
}
@XmlElement
public void setUserId(String userId) {
this.userId = userId;
}
@XmlElement
public void setAmount(double amount) {
this.amount = amount;
}
@XmlElement
public double getAmount() {
return amount;
}
}
但是我得到了以下响应作为输出.
235
345.0
如何更改根元素.响应类型为APPLICATION_XML_VALUE
1> Patrick..:
您正在使用JAXB特定注释,但Jackson会对您的响应进行编组.要使JAXB注释与Jackson一起使用,您必须将其包含在jackson-module-jaxb-annotations
内部pom.xml
com.fasterxml.jackson.module
jackson-module-jaxb-annotations
此外,您必须注册JaxbAnnotationModule
您的配置.我认为使用Spring Boot实现这一目标的最简单方法是注册org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer
类似于这样的Bean :
@Component
public class JacksonCustomizer implements Jackson2ObjectMapperBuilderCustomizer {
@Override
public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
jacksonObjectMapperBuilder.modulesToInstall(new JaxbAnnotationModule());
}
要么
@Bean
Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
return (mapperBuilder) -> mapperBuilder.modulesToInstall(new JaxbAnnotationModule());
}