采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,一般用于接口交互的模型,比如请求或者响应或者响应中的属性类,需要实现Serializable接口,但是我在实际springboot项目中都没有加,也没有加上serialVersionUID ,一直都没有出过什么问题,请问现在的项目还需要加上这个接口的实现,或者UID吗?
spring cloud不需要。因为spring cloud是基于http的 而你的spring mvc返回的是json,json序列化与反序列化不需要你的类实现serialiable接口。 其他框架需要,主要是因为其他框架通信时序列化与反序列化要求实现该接口。
我查了下相关材料 springcloud的controller层的推荐加注解是@RestController,这个注解包含了@Controller和@ResponseBody,@ResponseBody注解指定了返回格式是JSON,JSON实现了serialiable接口,所以不需要我们再去添加,所以我分别测试了在controller上加@RestController和@Controller注解,如果使用@Controller注解,在方法上不加@@ResponseBody,返回404报错,所以推测框架应该是做了校验,如果controller方法返回不指定返回数据类型,则找不到该接口,我想找到框架这部分的源码,无从下手不知道框架在哪里写了这个逻辑,老师能不能指导一下
非常感谢!
spring mvc的json序列化/反序列化,是基于jackson做的。Jackson并不要求对象实现serialiable接口,所以你加或者不加都无所谓。 @RestController和@Controller 的问题,这是个Spring MVC基础问题。 @RestController是个组合注解,它就相当于@Controller + @ResponseBody注解。 如果用@Controller,不加@ResponseBody,那么返回的视图不是JSON,而是网页,而你有没有这样的网页视图文件,所以404。 这和参数校验可以说毛线的关系都没有。 建议花1个星期,系统学习下Spring MVC。
登录后可查看更多问答,登录/注册
面向未来微服务:熟练掌握Spring Cloud Alibaba
530 4
1.9k 1
2.6k 2
1.6k 3
3.6k 13