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 ...
随机推荐
- Markdown中实现缩进的方法
markdown中实现缩进的方法 在每一行开头的时候,先输入下面的代码,然后紧跟着输入文本即可.注意有分号. 半角空格: 或 全角空格: 或 不换行空格: 或
- IOS开发UI篇之──自定义UIActionSheet
转载自:http://www.cnblogs.com/pengyingh/articles/2343200.html UIActionSheet类系IOS开发中实现警告框的重要的类,而在好多应用中,都 ...
- 得到当前堆栈信息的两种方式(Thread和Throwable)的纠结
今天进行slf4j中logger的同步封装.主要目的是为了以后方便更换日志实现系统. 遇到的问题:使用Thread.currentThread().getStackTrace()[1].getClas ...
- Bash String Manipulation Examples – Length, Substring, Find and Replace--reference
In bash shell, when you use a dollar sign followed by a variable name, shell expands the variable wi ...
- 不支持的关键字:“provider connection string”报错信息及解决方案
今天在部署公司开发框架的时候 ,登录系统之后调用代办列表的时候就报错了 总线调用契约XX.Service.Contracts.IXXService上的GetXXCount方法时出错. Resoluti ...
- HTML增加删除邮件(table)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Mysql 半同步复制配置
以下是配置和监控半同步复制: 1. 半同步复制功能以plugin的方式接入MySQL,需要在主库与从库两端同时开启半同步的支持,具体配置如下: On the master mysql> INST ...
- [置顶] c#对于文件的操作
在system.iO:命名空间中提供了两种遍历枚举文件夹的类,Directory 和DirectoryInfo, 他们都有一个方法GetDirectories():来便利枚举文件夹, /// < ...
- Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理
Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理 >>>>>>>>>>>>>>>>& ...
- JAVA练习
JAVA基础练习 1.给java,stb,sql三门科目的成绩算出JAVA和SQL的成绩差,JAVA和SQL的成绩共是,三门课的总分是,三门课的平均分是多少 import java.util.Scan ...