JavaSpring控制器/组件实现可序列化
在最近的一个基于Web的Java项目中,我遇到了许多地方,在那里我看到了一个基于Spring的控制器/组件实现Serializable
我很好奇,控制器/组件为什么必须实现Serializable
我认为这样做是错误的做法,到目前为止,搜索任何实现Serializable
的场景都没有产生任何结果。我认为这违反了MVC原则,是非常规的。您需要将域/业务对象与控制器/组件分开
我想在代码库中纠正这种错误做法,但只是想确保我有这样做的理由
任何说明本案例的解释/场景都将不胜感激
# 1 楼答案
在使用spring session时,需要控制器类实现Serializable的一个特定用例
Spring会话将把会话外部化——我使用Spring会话和JDBC来协调容器之间的会话。当您有一个会话范围的控制器时,spring会话将使用字节[]列在数据库中序列化该状态
# 2 楼答案
控制器不需要是
Serializable
。它们是无状态的,只是在模型和视图之间进行调解。其他无状态组件也是如此。让它们Serializable
没有好处然而,有状态模型对象通常是
Serializable
,因为它们有时被放置在HttpSession
中。应用服务器要求会话中的对象为Serializable
以实现复制和持久化