如何解决Spring Boot Session存储非可序列化对象报错(实现Serializable仍无效)
问题核心原因
你给BanksMvcController实现Serializable属于无效操作,报错指向的第62行代码是你往Session中存入AccountListWrapper对象的逻辑,该报错是要求存入Session的对象本身以及它内部嵌套的所有自定义对象都要支持序列化,和Controller类是否可序列化无关。
具体修复步骤
- 首先修改
AccountListWrapper类,让它实现Serializable接口,同时显式声明序列化ID,避免后续类改动后出现序列化版本不兼容问题:
public class AccountListWrapper implements Serializable { // 显式声明序列化ID private static final long serialVersionUID = 1L; // 原有类逻辑不变 }
- 接着检查
AccountListWrapper内部嵌套的所有自定义类,你代码里用到了Account类,也需要让它实现Serializable接口并声明序列化ID:
public class Account implements Serializable { private static final long serialVersionUID = 1L; // 原有类逻辑不变 }
- 如果两个类内部存在不需要序列化的字段(比如数据库连接、Spring注入的服务类等),给对应字段加上
transient关键字修饰,序列化时会自动跳过这类字段。
额外注意
不要把Spring容器管理的Bean(比如Service、Mapper实例)存入Session,这类Bean本身不可序列化,也没有存入会话的必要,需要使用时直接通过@Autowired注入即可。
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

