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 ...
随机推荐
- S2 结业考试前改错汇总
1. PS:正确答案是A:枚举是值类型,一个类的对象是引用类型. 2. 每张表最多包含1个聚集索引.并且聚集索引会决定记录储存的物理位置.聚集索引不一定要建立在主键字段上.一张表可以没有任何索引. 3 ...
- Mybatis上路_05-使用命令行自动生成
http://my.oschina.net/vigiles/blog/125127 目录[-] 1.数据准备: 1)建库: 2)建表: 3)预设数据: 2.编写Generator执行配置文件: 3.搭 ...
- List 排序
1:sort 这种实现是用朗姆达表达式实现.Comparison<T> 委托详见 http://msdn.microsoft.com/zh-cn/library/tfakywbh.aspx ...
- [ES6] 23. Rest Parameters & Spread Parameters
Rest Parameters: In ES5, when you don't know how many paramters will be passed in, you can use argum ...
- 自己动手写CPU之第七阶段(7)——乘累加指令的实现
将陆续上传本人写的新书<自己动手写CPU>.今天是第30篇.我尽量每周四篇 亚马逊的销售地址例如以下.欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8 ...
- google DNS
DNS 8.8.8.8 然后 C:\Windows\System32\drivers\etc\hosts 108.111.1.1 www.s.com
- C#数据库读取数据后转换为INT32后计算的小技巧
这有什么难的,不管是什么数据库, 首先分别读出userinfo中usermoney的值 存入s1,card中extramoney的值s2 读出字段数据你应该会吧! 再用userinfo中字段userm ...
- NotificationListenerService不能监听到通知
作者:Hugo链接:https://www.zhihu.com/question/33540416/answer/113706620来源:知乎著作权归作者所有,转载请联系作者获得授权. 背景知识: 所 ...
- Java集合和PHP的对比
这里突然感觉到在java中的集合,和php的数组非常相似 .
- com.android.builder.packaging.DuplicateFile
解决方法: packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' ...