我有一个Web应用程序(tomcat 7,spring 4.2,ZK 7)。由于我有两个可以“接管”其他会话的服务器,因此需要序列化会话,这导致了在反序列化后我必须以某种方式重新初始化spring服务的问题。由于ZK的结构,需要序列化Composers
(控制器类型)(并且这些Composers使用服务)。
例如,假设我有一个需要序列化的对象。这个对象引用了一个Spring服务(无法序列化,因为最后有一个对DataSource
,SqlSessionTemplate
等的引用 - 所有这些都不是Serializable
) 。
当前的解决方案是让一个单独的bean位于对ApplicationContext的@Autowired
引用,这样我就可以通过getInstance()访问它来获取对Service的引用,但是这个解决方案不是非常优雅,也使测试更复杂(因为我更喜欢单元测试而不加载Spring上下文)。
还有其他一些,最好更好的方法吗?