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>

Spring-Boot-XML-Restful-Service的更多相关文章

  1. Spring Boot - Building RESTful Web Services

    Spring Boot Building RESTful Web Services https://www.tutorialspoint.com/spring_boot/spring_boot_bui ...

  2. 使用Spring boot开发RestFul 风格项目PUT/DELETE方法不起作用

    在使用Spring boot 开发restful 风格的项目,put.delete方法不起作用,解决办法. 实体类Student @Data public class Student { privat ...

  3. Spring Boot2 系列教程(三十一)Spring Boot 构建 RESTful 风格应用

    RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...

  4. Spring Boot构建 RESTful 风格应用

    Spring Boot构建 RESTful 风格应用 1.Spring Boot构建 RESTful 风格应用 1.1 实战 1.1.1 创建工程 1.1.2 构建实体类 1.1.4 查询定制 1.1 ...

  5. Spring Boot开发RESTful接⼝服务及单元测试

    Spring Boot开发RESTful接⼝服务及单元测试 常用注解解释说明: @Controller :修饰class,⽤来创建处理http请求的对象 @RestController :Spring ...

  6. 基于Spring Boot的RESTful API实践(一)

    1. RESTful简述    REST是一种设计风格,是一组约束条件及原则,而遵循REST风格的架构就称为RESTful架构,资源是RESTful的核心,一个好的RESTful架构,通过URL就能很 ...

  7. spring如何创建RESTful Service

    REST REST,是指REpresentational State Transfer,有个精辟的解释什么是RESTful, 看url就知道要什么 看method就知道干什么 看status code ...

  8. 用Kotlin写一个基于Spring Boot的RESTful服务

    Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...

  9. spring boot构建restful服务

    使用spring boot快速构建出restful服务 JPA实现REST 创建spring boot项目,在项目文件pom.xml中添加以下依赖: <dependency> <gr ...

  10. spring boot + neo4j restful

    整整折腾了三天,终于把spring boot + neo4j的路走通了. 这里介绍3个部分,pom,entity,repository 1)pom <?xml version="1.0 ...

随机推荐

  1. php错误级别

    E_ERROR 致命的运行错误.错误无法恢复,暂停执行脚本. E_WARNING 运行时警告(非致命性错误).非致命的运行错误,脚本执行不会停止. E_PARSE 编译时解析错误.解析错误只由分析器产 ...

  2. JBPM学习(一):实现一个简单的工作流例子全过程

    test.png test.jpdl.xml <?xml version="1.0" encoding="UTF-8"?> <process ...

  3. DelphiTXT文档编辑器

    EXE:http://files.cnblogs.com/xe2011/Text_EditorRelease2013-12-20-185320.rar Delphi XE5 PAS:http://fi ...

  4. Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing--转

    原文:http://blog.csdn.net/sunny2038/article/details/6926079 最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一 ...

  5. 【转】BeagleBone Black USB一线通(3)

    接上篇  BeagleBone Black 一线通(2) 五.vnc图形终端 虽然 BB-Black带有一个Micro-HDMI接口,不过那么名片不到的一个小板,连接到一个20来寸的显示器上,还是有些 ...

  6. 关于AFNetworking访问网络超时的设置

    前言:有的猿会发现在设置AFNetworking访问网络超时时,直接用self.manager.requestSerializer.timeoutInterval =10.f不起作用. 解决办法:经过 ...

  7. iOS自定义UICollectionViewLayout之瀑布流

    目标效果 因为系统给我们提供的 UICollectionViewFlowLayout 布局类不能实现瀑布流的效果,如果我们想实现 瀑布流 的效果,需要自定义一个 UICollectionViewLay ...

  8. Windows redis集群搭建

    一.Windows下Redis安装 下载地址https://github.com/dmajkic/redis/downloads,下载到的Redis支持32bit和64bit.根据自己实际情况选择,本 ...

  9. Apache 配置多端口 多虚拟主机 局域网访问

    \wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf 修改如下 NameVirtualHost *:80          Documen ...

  10. Canvas 笔记(持续更新中)

    1.从线条开始 HTML <canvas id="canvas"></canvas> Javascript var canvas=document.getE ...