设计模式在springboot中的应用 SpringBoot项目中如何定制HTTP消息转换器?

[更新]
·
·
分类:互联网
4803 阅读

设计模式在springboot中的应用

SpringBoot项目中如何定制HTTP消息转换器?

SpringBoot项目中如何定制HTTP消息转换器?

要想自己定制HTTP消息转换器必须先知道SpringBoot默认是怎么做HTTP消息转换的。
先来看我们平常工作中开发一个简单的get请求:
那么当前端请求我们的API的时候,我们是如何将网络传输的字节流序列化成我们想要的对象呢?做完业务处理后又是如何返回数据呢?
HttpMessageConverter在SpringBoot框架下,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。
打开任何一个集成了Spring-web功能的SpringBoot项目,都可以找到这个HttpMessageConvert:
可以看到他是一个接口类,和他在一个包下面有很多实现类,感兴趣的同学可以debug跟进去把这块源码搞透,这个过程中大家还可以学习到很多关于序列化的知识。
源码解析:怎么知道SpringBoot中的默认convert
在项目的启动类上有一个@SpringBootApplication注解,点进去会看到他是一系列注解的包含,其中有一个@EnableAutoConfiguration注解,继续点进去查看:
发现引入了一个类:AutoConfigurationImportSelector类,继续跟进去有一个方法selectImports():
继续点击进入loadMetadata这个方法:
到这一步相信大家就清晰了他是怎么加载的了:
继续走下去就知道如何加载消息的默认convert,这里就不和大家说答案,希望大家自己可以跟进去看看,收获是不一样的~
定制自己的convert知道了消息转换器的原理以及SpringBoot中如何加载的,我们就知道如何去定制自己的消息转换器了,先实现自己的一个convert,继承AbstractHttpMessageConverter:
然后定义一个WebConfig类继承WebMvcConfigurer,把我们自定义的这个convert加进去:
实际工作中,大家可能很多时候并不需要自己去实现convert,用默认的消息转换器就可以了,除非大家有自己特殊的需求考虑,否则不建议非得自己去实现这个convert。
以上就是关于SpringBoot中如何定制消息转换器的回答了,不足之处欢迎大家评论交流,共同学习。
我是【java架构设计】,如果我的回答对您有帮助,欢迎转发点赞,我将持续为您提供Java领域优质内容!

我是计算机专业,马上要选毕业设计了,该怎么选题呢?可是在学校什么有用的都没学到,求大神指导?

如果你们不是很严格的话,就选javaEE课题,用ssm或者springboot框架或者最基础的jsp servlet jdbc的架构,php可以选择tp或者laravel框架的项目,然后模块要工作量大,最好带图表统计,如果你们导师或者学校很卡请选择python 大数据 数据分析 爬虫类的,还可以做app 小程序,但是工作量 创新都要有呀