我有一个带有范围会话的Spring bean。这个bean包含对另一个不可序列化的单例bean的引用。如果我想序列化会话范围的bean,最好的方法是什么?
这里已经提出了同样的问题:Spring session-scoped beans (controllers) and references to services, in terms of serialization
接受的答案是:
[...]这个问题在Spring 3.0中通过提供非可序列化bean的代理来解决,该bean从当前应用程序上下文中获取实例
据我所知,链接视频中的发言人应该“正常工作”。但就我而言,它不是!当我尝试序列化会话范围bean时,我得到NotSerializableException
。
我该如何解决这个问题?
答案 0 :(得分:1)
您需要指示 Spring来创建该代理。在基于XML的配置中,通过<aop:scoped-proxy/>
标记,在component-scan
模式下通过注释:
@Scope(proxyMode = ScopedProxyMode.INTERFACES)
在您的控制器类上。
答案 1 :(得分:-2)
您可以将单身人士参考字段标记为transient
。然后检查How to execute method after deserialization并从ApplicationContext
加载参考。
另外,请提供stacktrace。
P.S。
使用会话钝化并不是一个好主意。