3

我有一个范围会话的 Spring bean。此 bean 包含对另一个不可序列化的单例 bean 的引用。如果我想序列化会话范围的 bean,最好的方法是什么?

这里已经问过同样的问题:Spring session-scoped beans (controllers) and references to services, in serialization

公认的答案是:

[...]这个问题在 Spring 3.0 中通过提供不可序列化 bean 的代理得到解决,该代理从当前应用程序上下文中获取一个实例

据我了解链接视频中的演讲者应该“正常工作”。但就我而言,它没有!当我尝试序列化我的会话范围 bean 时,我得到一个NotSerializableException.

我怎么解决这个问题?

4

2 回答 2

1

您需要指示Spring 创建该代理。在基于 XML 的配置中,通过<aop:scoped-proxy/>标记,在component-scan模式下通过注释:

@Scope(proxyMode = ScopedProxyMode.INTERFACES) 

在您的控制器类上。

于 2017-01-04T10:11:46.293 回答
-2

您可以将单例引用字段标记为transient。然后检查如何在反序列化后执行方法并从ApplicationContext. 另外,请提供堆栈跟踪。

附言

使用会话钝化不是一个好主意。

于 2013-03-11T10:12:47.783 回答