Spring Controller / Component实现Serializable

时间:2014-01-24 02:31:27

标签: java spring spring-mvc serialization

在最近的一个基于Web的Java项目中,我遇到过各种各样的地方,我已经看到基于Spring的控制器/组件实现Serializable

我很好奇为什么控制器/组件应该实现Serializable

我认为这样做是错误的做法,到目前为止搜索任何实施Serializable的方案都没有产生任何结果。我认为它违反了MVC原则并且是非常规的。您可能希望将域/业务对象与控制器/组件分开。

我想纠正代码库中的这种不良做法,但只是想确保我有理由这样做。

任何解释此案例的解释/场景都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

控制器不需要Serializable。他们是无国籍的,只是在模型和视图之间进行调解。对于其他无状态组件也可以这样说。制作它们Serializable没有任何好处。

有状态模型对象通常是Serializable,因为它们有时会放在HttpSession中。应用服务器要求会话中的对象为Serializable,以用于复制和持久性目的。

答案 1 :(得分:0)

使用spring session时,一个特定的用例需要Controller类来实现Serializable。

Spring会话将外部化会话-我将Spring会话与JDBC结合使用以协调容器之间的会话。当您拥有Session Scoped Controller时,spring会话将使用byte []列在数据库中对该状态进行序列化。