请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于springboot接口序列化的问题

老师您好,一般用于接口交互的模型,比如请求或者响应或者响应中的属性类,需要实现Serializable接口,但是我在实际springboot项目中都没有加,也没有加上serialVersionUID ,一直都没有出过什么问题,请问现在的项目还需要加上这个接口的实现,或者UID吗?

正在回答

1回答

spring cloud不需要。因为spring cloud是基于http的
而你的spring mvc返回的是json,json序列化与反序列化不需要你的类实现serialiable接口。
其他框架需要,主要是因为其他框架通信时序列化与反序列化要求实现该接口。

0 回复 有任何疑惑可以回复我~
  • 提问者 zuo2020 #1
    我查了下相关材料
    springcloud的controller层的推荐加注解是@RestController,这个注解包含了@Controller和@ResponseBody,@ResponseBody注解指定了返回格式是JSON,JSON实现了serialiable接口,所以不需要我们再去添加,所以我分别测试了在controller上加@RestController和@Controller注解,如果使用@Controller注解,在方法上不加@@ResponseBody,返回404报错,所以推测框架应该是做了校验,如果controller方法返回不指定返回数据类型,则找不到该接口,我想找到框架这部分的源码,无从下手不知道框架在哪里写了这个逻辑,老师能不能指导一下
    回复 有任何疑惑可以回复我~ 2020-06-30 10:38:13
  • 提问者 zuo2020 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-30 14:10:26
  • 大目 回复 提问者 zuo2020 #3
    spring mvc的json序列化/反序列化,是基于jackson做的。Jackson并不要求对象实现serialiable接口,所以你加或者不加都无所谓。
    
    
    @RestController和@Controller 的问题,这是个Spring MVC基础问题。
    @RestController是个组合注解,它就相当于@Controller + @ResponseBody注解。
    
    如果用@Controller,不加@ResponseBody,那么返回的视图不是JSON,而是网页,而你有没有这样的网页视图文件,所以404。
    这和参数校验可以说毛线的关系都没有。
    
    建议花1个星期,系统学习下Spring MVC。
    回复 有任何疑惑可以回复我~ 2020-07-02 21:25:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信