十一、SpringBoot的类型转换
来源:互联网 发布:aaa服务器 windows 编辑:程序博客网 时间:2024/06/07 10:55
HttpMessageConverters
Spring MVC使用HttpMessageConverter接口转换HTTP请求和响应。合理的缺省值被包含的恰到好处(out of the box),例如对象可以自动转换为JSON(使用Jackson库)或XML(如果Jackson XML扩展可用则使用它,否则使用JAXB)。字符串默认使用UTF-8编码。
原理参考可参考:http://blog.csdn.net/l_sail/article/details/70209845
如果需要添加或自定义转换器,你可以使用Spring Boot的HttpMessageConverters类:
定义一个 HttpMessageConverter
package com.lf.httpMessageConverter;import com.fasterxml.jackson.databind.ObjectMapper;import com.lf.entity.User;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.MediaType;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;import org.springframework.util.StreamUtils;import java.io.IOException;import java.nio.charset.Charset;/** * Created by LF on 2017/4/17. */public class MyHttpMessageConverter extends AbstractHttpMessageConverter<User> { //自定义媒体类型 public MyHttpMessageConverter() { super(new MediaType("application", "x-wisely", Charset.forName("UTF-8"))); } @Override protected boolean supports(Class<?> clazz) { return User.class.isAssignableFrom(clazz); } @Override protected User readInternal(Class<? extends User> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { String str = StreamUtils.copyToString(inputMessage.getBody(), Charset.forName("UTF-8")); return new User(); } @Override protected void writeInternal(User user, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { String out = "hello:" + outputMessage.getBody(); outputMessage.getBody().write(out.getBytes()); }}
实体类
package com.lf.entity;/** * Created by LF on 2017/4/17. */public class User { private int id; private String name; private boolean student; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isStudent() { return student; } public void setStudent(boolean student) { this.student = student; }}
配置HttpMessageConverter
@Configurationpublic class MyConfiguration extends WebMvcConfigurerAdapter { @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new MyHttpMessageConverter()); }}
package com.lf.config;import com.lf.httpMessageConverter.MyHttpMessageConverter;import org.springframework.boot.autoconfigure.web.HttpMessageConverters;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import java.util.List;/** * Created by LF on 2017/4/17. */@Configurationpublic class MyConfiguration { @Bean public HttpMessageConverters customConverters() { HttpMessageConverter additional = new MyHttpMessageConverter(); return new HttpMessageConverters(additional); }}
两种方法都可以。
任何在上下文中出现的HttpMessageConverter bean将会添加到converters列表,你可以通过这种方式覆盖默认的转换器(converters)。
controller
package com.lf.web;import com.lf.entity.User;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.RestController;/** * Created by LF on 2017/4/17. */@RestControllerpublic class IndexController { @RequestMapping(value = "/index", method = RequestMethod.POST) public User index(@RequestBody User user) { return user; }}
0 0
- 十一、SpringBoot的类型转换
- Struts2(十一)---类型转换
- SpringBoot使用devtools导致的类型转换异常
- springBoot接收date类型参数转换
- java学习十一 java强制类型转换
- java提高篇(十一)-----强制类型转换
- java提高篇(十一)-----强制类型转换
- java提高篇(十一)-----强制类型转换
- java提高篇(十一)-----强制类型转换
- Java进阶(十一)强制类型转换
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- SpringBoot(十一):Spring boot 中 mongodb 的使用
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- sdut_java_字符串扩展
- 堆排序
- LeetCode
- 学习写需求分析
- Eclipse IDE for Java EE Developers 下载地址
- 十一、SpringBoot的类型转换
- CSS基础知识总结
- Linux中搭建一个ftp服务器详解
- Java并发工具包- java.util.concurrent
- bzoj 3930: [CQOI2015]选数 莫比乌斯反演+杜教筛
- MyEclipse的Package视图和Naviagtor视图
- Map遍历方法
- 442
- 虚拟机下开启Linux的SSH连接