@Controller
@Scope("session")
Serializable
ApplicationContext
ApplicationContextAware
到目前为止,我几乎都忽略了这些问题。最近,我想到了声明我所有的spring依赖项,transient并readResolve()通过静态实用程序类将它们重新获得WebApplicationContextUtils,从而将request / ServletContext保留在ThreadLocal。这很繁琐,但是可以保证在反序列化对象时,其依赖关系将与 当前 应用程序上下文保持“最新” 。
transient
readResolve()
WebApplicationContextUtils
ThreadLocal
是否对此有任何公认的实践,或者是否有任何序列化spring上下文部分的准则。
请注意,在JSF中,托管bean(〜controllers)是有状态的(与基于动作的Web框架不同)。因此,也许我的问题更多地代表JSF,而不是spring- mvc。
在此演示文稿中(大约1:14),发言者说,此问题在Spring 3.0中通过提供不可序列化的Bean代理得以解决,该代理可从 当前 应用程序上下文中获取实例(反序列化)