Spring Boot实现xml传参和返回值
阅读文本大概需要3分钟。虽然json作为数据传输的格式大型其道,但是使用xml格式传输的系统还是在一些存量的系统中存在。另外WebService本身就是使用xml格式进行数...
阅读文本大概需要3分钟。
虽然json作为数据传输的格式大型其道,但是使用xml格式传输的系统还是在一些存量的系统中存在。另外WebService本身就是使用xml格式进行数据传输。今天用个小例子看看Spring Boot如何实现xml传参和返回值。
1、新建maven项目,添加依赖
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> -
<modelVersion>4.0.0</modelVersion> -
<groupId>com.jemter</groupId> -
<artifactId>com-lesson17</artifactId> -
<version>0.0.1-SNAPSHOT</version> -
<packaging>jar</packaging> -
<name>com-lesson1</name> -
<url>http://maven.apache.org</url> -
<parent> -
<groupId>org.springframework.boot</groupId> -
<artifactId>spring-boot-starter-parent</artifactId> -
<version>2.0.4.RELEASE</version> -
</parent> -
<properties> -
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> -
</properties> -
<dependencies> -
<dependency> -
<groupId>org.springframework.boot</groupId> -
<artifactId>spring-boot-starter-web</artifactId> -
</dependency> -
<dependency> -
<groupId>com.fasterxml.jackson.dataformat</groupId> -
<artifactId>jackson-dataformat-xml</artifactId> -
</dependency> -
</dependencies> -
</project>
jackson-dataformat-xml是xml和bean转换依赖的包
2、新建实体类,并添加xml和和bean转换的注解(注解要写在get方法上)
教师实体类
-
package com.lesson17.model; -
import java.util.List; -
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; -
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -
@JacksonXmlRootElement(localName = "MESSAGE") -
public class Teacher { -
private Integer id; -
private String teacherName; -
private List<Student> studentList; -
@JacksonXmlProperty(isAttribute = true, localName = "TEACHER_ID") -
public Integer getId() { -
return id; -
} -
public void setId(Integer id) { -
this.id = id; -
} -
@JacksonXmlProperty(localName = "TEACHER_NAME") -
public String getTeacherName() { -
return teacherName; -
} -
public void setTeacherName(String teacherName) { -
this.teacherName = teacherName; -
} -
@JacksonXmlElementWrapper(localName = "STUDENT_LIST") -
@JacksonXmlProperty(localName = "STUDENT") -
public List<Student> getStudentList() { -
return studentList; -
} -
public void setStudentList(List<Student> studentList) { -
this.studentList = studentList; -
} -
@Override -
public String toString() { -
return "Teacher{" + "id=" + id + ", teacherName=" + teacherName + ", studentList=" + studentList + "}"; -
} -
}
学生实体类
-
package com.lesson17.model; -
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -
public class Student { -
private Integer id; -
private String stuName; -
private String sex; -
@JacksonXmlProperty(isAttribute = true, localName = "STUDENT_ID") -
public Integer getId() { -
return id; -
} -
public void setId(Integer id) { -
this.id = id; -
} -
@JacksonXmlProperty(localName = "STUDENT_NAME") -
public String getStuName() { -
return stuName; -
} -
public void setStuName(String stuName) { -
this.stuName = stuName; -
} -
@JacksonXmlProperty(localName = "STUDENT_SEX") -
public String getSex() { -
return sex; -
} -
public void setSex(String sex) { -
this.sex = sex; -
} -
@Override -
public String toString() { -
return "Student{" + "id=" + id + ", stuName=" + stuName + ", sex=" + sex + "}"; -
} -
}
3、编程控制类
-
package com.lesson17.controller; -
import java.util.Arrays; -
import java.util.HashMap; -
import java.util.Map; -
import org.springframework.web.bind.annotation.RequestBody; -
import org.springframework.web.bind.annotation.RequestMapping; -
import org.springframework.web.bind.annotation.RequestMethod; -
import org.springframework.web.bind.annotation.ResponseBody; -
import org.springframework.web.bind.annotation.RestController; -
import com.lesson17.model.Student; -
import com.lesson17.model.Teacher; -
@RestController -
@RequestMapping("/teacher") -
public class TeacherController { -
@RequestMapping(value = "/getInfo", method = RequestMethod.GET, produces = "application/xml") -
@ResponseBody -
public Teacher getInfo() { -
Student student1 = new Student(); -
student1.setId(1); -
student1.setStuName("张三"); -
student1.setSex("男"); -
Student student2 = new Student(); -
student2.setId(2); -
student2.setStuName("李四"); -
student2.setSex("男"); -
Teacher teacher = new Teacher(); -
teacher.setId(11); -
teacher.setTeacherName("杨老师"); -
teacher.setStudentList(Arrays.asList(student1, student2)); -
return teacher; -
} -
@RequestMapping(value = "/postInfo", method = RequestMethod.POST, consumes = "application/xml") -
public Map<String, Object> postInfo(@RequestBody Teacher teacher) { -
System.out.println("postman传过来的xml信息转换成实体类如下:==========" + teacher.toString()); -
Map<String, Object> results = new HashMap<String, Object>(); -
results.put("code", "000000"); -
results.put("msg", "success"); -
return results; -
} -
}
注:关键步骤是RequestMapping注解的produces和consumes这两个属性,如果参数是xml,则需要把consumes配置成application/xml;如果是返回值是xml,则需要把把produces配置成application/xml。
4、编写SpringBoot启动类
-
package com.lesson17; -
import org.springframework.boot.SpringApplication; -
import org.springframework.boot.autoconfigure.SpringBootApplication; -
@SpringBootApplication -
public class Application { -
public static void main(String[] args) { -
SpringApplication.run(Application.class, args); -
} -
}
5、application.yml配置如下
-
server: -
port: 8080 -
servlet: -
context-path: /lesson17 -
spring: -
application: -
name: jmeter-lesson17
6、启动验证
请求http://127.0.0.1:8080/lesson17/teacher/getInfo接口

请求http://127.0.0.1:8080/lesson17/teacher/postInfo接口

☆
往期精彩
☆
03 精讲Spring Boot—入门+进阶+实例
关注我
每天进步一点点

喜欢!在看☟
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)