springboot 项目中自定义的返回对象在添加了@RestController后还需要实现序列化接口吗?
1.什么是Serializable接口?
一个对象序列化的接口。一个类只有实现了Serializable接口,它的对象才能被序列化。
2.什么是序列化?
将对象的状态信息转换为可以存储或传输的形式的过程。
程序的运行机制是:程序在运行时实例化出对象,这些对象存在于内存中,随着程序运行停止而消失(也就是匿名对象将会被垃圾回收器回收掉,这是堆内存的知识,对象存储在堆内存中),但如果我们想把某些对象(一般都是各不相同的属性)保存下来或者传输给其他进程,在程序终止运行后这些对象仍然存在,可以在程序再次运行时读取这些对象的信息,或者在其他程序中利用这些保存下来的对象信息恢复成实例对象。这种情况下就要用到对象的序列化和反序列化。
3.总结,只有在Java对象在需要存储和传输的时候才需要使用到序列化。因为springboot在提供接口的时候设计到网络的传输,所以传输的对象是肯定需要实现Serializable 接口的,但是在使用@RestController 的时候spring 已经确定使用json 格式传输,故我们定义的所谓传输对象其实已经被转换成了成了json 对象,而json 对象是实现了Serializable 接口的,所以定义的传输对象在@RestController 的修饰下是不需要实现序列化接口的。