zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    SpringBoot项目启动Gzip压缩
    Docker学习(一)
    MySQL中text类型说明
    java MultipartFile多文件上传/通过文件夹解析所有文件
    java后端处理跨域
    SpringCloud Feign调用服务接口时,GET请求变成POST请求报错
    java8 LocalDateTime/LocalDate 获取各种日期类型
    IDEA 不能输入中文
    基于docker 搭建minio 文件服务器
    MySql数据库导入sql错误 Unknown collation: 'utf8mb4_0900_ai_ci'
  • 原文地址:https://www.cnblogs.com/laoniu85/p/5052258.html
Copyright © 2011-2022 走看看