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. Lucene子项目------------------Solr遇到的问题

    SolrCore Initialization Failures paper: org.apache.solr.common.SolrException:org.apache.solr.common. ...

  2. 分布式助手Zookeeper(四)

    分布式助手Zookeeper(四)博客分类: Zookeeper zookeeper配置同步zookeeper编程 Zookeeper是分布式环境下一个重要的组件,因为它能在分布式环境下,给我带来很多 ...

  3. [Whole Web] [Node.js, PM2] Controlling runaway apps using pm2

    shows how to enable features in your pm2 config file that allow you to prevent runaway apps from bri ...

  4. RHCA442学习笔记-Unit10内存地址及分配

      Unit 10 Memory Addressing and Allocation 内存地址及分配 学习目标: A. 虚拟地址与物理地 B. 调整内存地址分配 C. 解析内存溢出    10.1 O ...

  5. 单核CPU,多线程与性能

      问题概述 单核CPU的计算机上, 多线程能够提高程序运行的性能吗? 这个问题看起来简单,实际很复杂,设计到多方面的因素. 首先我们要把概念搞清楚, 那就是什么是性能? 一般来说, 我们把运行一个任 ...

  6. Java基础知识强化之IO流笔记38:字符流缓冲流之BufferedWriter / BufferedReader使用

    1. 字符流缓冲流: 字符流为了高效读写,也提供了对应的字符缓冲流. BufferedWriter:字符缓冲输出流 BufferedReader:字符缓冲输入流 2. BufferedWriter使用 ...

  7. jQuery多图上传Uploadify插件使用及传参详解

    因为工作需要,这两天接触到了Uploadify插件,由于是第一次用,花了我近一天的时间.下面我把我在用这个插件过程详细的分享出来,也让自己巩固一下,也希望能帮助到你. 所需文件: jquery-1.8 ...

  8. 关于ContentProvider的批量操作

    今天看公司代码,发现在批量插入通话记录和联系人的时候,用了一个 ArrayList<ContentProviderOperation> ops = new ArrayList<Con ...

  9. angularjs + springmvc 上传和下载

    jsp: <form ng-submit="uploadFile()" class="form-horizontal" enctype="mul ...

  10. dbms_job涉及到的知识点

    用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.su ...