您的位置:首页 > 编程语言 > Java开发

Spring-Boot-XML-Restful-Service

2015-12-16 20:40 405 查看
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-write-an-xml-rest-service

总体说明

1. 只需要在pom中引入相关的依赖,既可以自动实现XML格式数据输出.
2. 可能由于maven版本 java范本等问题 依赖项会有所不同

过程

2015年12月16日20:37:29

找到一篇博客 开始实验 因网速较慢不太顺利

2015年12月16日22:52:33

寻找到了sprint-boot的官方文档,

发现需要依赖jacson-dataformat-xml 在pom中添加了(2.7rc)

helloworld实验成功 可以输出User类json数据和xml数据

测试发现map格式的数据不能正常转换成功(建议结果都使用pojo格式)

public class Data {
private Map<String,Object> objectMap=new LinkedHashMap<String, Object>();
//...省略
}

出现错误:
StartTag: invalid element name


尝试将jackson-dataformat-xml的版本改为更低的版本

发现不能正常转换

报错:
No converter found for return value of type:


如果添加
@XmlRootElement
注解则Pojo类能正常转换

map或map的包装类报错

SAXException2: class com.sishuok.entity.User以及其任何超类对此上下文都是未知的。


2015年12月16日23:57:34

如果map中的对象是一个具体的类则使用@XmlRootElement能够转换成功,

否则仍出现错误
StartTag: invalid element name


public class Data {
private Map<String,User> objectMap=new LinkedHashMap<String, User>();
//...省略
}

测试如果是
list<User>
的情况 jackson也可正常转换

list<Object>
的情况下 如果Object的实例为Pojo也可以正常转换

成功示例

例子代码

User是一个Pojo类 无需任何注解等

public class User implements Serializable {
private Long id;
private String name;

//...省略
}

Contoller是一个普通的RestController也不需要任何特殊代码

@RestController
@RequestMapping("/user")
public class UserController {

@RequestMapping("/{id}")
private User view(@PathVariable("id") Long id) {
User user = new User();
user.setId(id);
user.setName("zhang");
return user;
}

}

需要依赖如下包

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>

下面这个包不是必须的(对xml处理的性能优化)

<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
</dependency>

可能会出现Log4j实例创建错误,添加如下依赖可解决

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>

maven-resources-plugin可能报错可添加如下plugin配置

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<dependencies>
<dependency>
<groupId>org.sonatype.plexus</groupId>
<artifactId>plexus-build-api</artifactId>
<version>0.0.7</version>
</dependency>
</dependencies>
</plugin>

特定版本可能出现maven-clean-plugin的问题可以加入以下plugin配置

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6</version>
</plugin>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: