Spring-Boot-XML-Restful-Service
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的更多相关文章
- Spring Boot - Building RESTful Web Services
Spring Boot Building RESTful Web Services https://www.tutorialspoint.com/spring_boot/spring_boot_bui ...
- 使用Spring boot开发RestFul 风格项目PUT/DELETE方法不起作用
在使用Spring boot 开发restful 风格的项目,put.delete方法不起作用,解决办法. 实体类Student @Data public class Student { privat ...
- Spring Boot2 系列教程(三十一)Spring Boot 构建 RESTful 风格应用
RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...
- Spring Boot构建 RESTful 风格应用
Spring Boot构建 RESTful 风格应用 1.Spring Boot构建 RESTful 风格应用 1.1 实战 1.1.1 创建工程 1.1.2 构建实体类 1.1.4 查询定制 1.1 ...
- Spring Boot开发RESTful接⼝服务及单元测试
Spring Boot开发RESTful接⼝服务及单元测试 常用注解解释说明: @Controller :修饰class,⽤来创建处理http请求的对象 @RestController :Spring ...
- 基于Spring Boot的RESTful API实践(一)
1. RESTful简述 REST是一种设计风格,是一组约束条件及原则,而遵循REST风格的架构就称为RESTful架构,资源是RESTful的核心,一个好的RESTful架构,通过URL就能很 ...
- spring如何创建RESTful Service
REST REST,是指REpresentational State Transfer,有个精辟的解释什么是RESTful, 看url就知道要什么 看method就知道干什么 看status code ...
- 用Kotlin写一个基于Spring Boot的RESTful服务
Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...
- spring boot构建restful服务
使用spring boot快速构建出restful服务 JPA实现REST 创建spring boot项目,在项目文件pom.xml中添加以下依赖: <dependency> <gr ...
- spring boot + neo4j restful
整整折腾了三天,终于把spring boot + neo4j的路走通了. 这里介绍3个部分,pom,entity,repository 1)pom <?xml version="1.0 ...
随机推荐
- jQuery语法基础&选择器
jQuery 语法 jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作. 基础语法是:$(selector).action() 美元符号定义 jQuery 选择符(select ...
- TIMESTAMP 与 explicit_defaults_for_timestamp
在MySQL 5.6.6之前,TIMESTAMP的默认行为: TIMESTAMP列如果没有明确声明NULL属性,默认为NOT NULL.(而其他数据类型,如果没有显示声明为NOT NULL,则允许NU ...
- 文件和目录之mkdir和rmdir函数
用mkdir函数创建目录,用rmdir函数删除目录. #include <sys/stat.h> int mkdir( const char *pathname, mode_t mode ...
- js 字符及字符串
1. 判断是否为null或者空字符 var == null var == undefined var == '' 2. 字符串及其分割 var arr = new Array(); //定义一数组 a ...
- cocoapods使用指南
什么是cocoapods cocoapods是库管理工具. cocoapods的用途 解决库之间的依赖关系.如前文所述: 一个开源的项目可能是另一个项目的基础, A依赖B, B依赖C和D, D又依赖E ...
- flex脚本的申明
//脚本申明的格式 <fx:Script> <![CDATA[ ]]></fx:Script> //程序完成的时候自动调用的事件 cre ...
- String类概述
(1)多个字符组成的一串数据. 其实它可以和字符数组进行相互转换. (2)构造方法: A:public String() B:public String ...
- java List交集 并集 差集 去重复并集
首先定义两个list List list1 =new ArrayList(); list1.add("); list1.add("); list1.add("); Lis ...
- sql查询结果集根据指定条件排序的方法
oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 有几种办法改变这种情况: (1)用 nvl 函数或decode 函数 将null ...
- Objective-C 中的方法回掉
Objective-C 中的方法回掉 Objective-C 中的方法调用 OC 类似C+,避免不了的内部的各种通信手段,函数调用,变量传递等,避免不了各种回掉等. 一.class直接调用 或者 o ...