Spring:序列化引用了不可序列化bean的对象
问题描述:
下面的类(我的实现UserDetailsService
)与会话绑定,会话被序列化(在谷歌应用程序引擎中)。Spring:序列化引用了不可序列化bean的对象
最近我观看了Spring 3演示文稿,其中说如下所示的bean(如userDao
)由不会序列化bean的代理加载,但只存储名称并重新获取有关反序列化的参考。
但与下面的代码我得到一个NotSerializableException: com.prepayproxy.dataaccesslayer.GAEUserDao
@Service("springUserDetailsService")
public class SpringUserDetailsService implements UserDetailsService, Serializable {
@Resource(name="userDao")
private IUserDao userDao;
//...
}
答
你有2种选择:
- 标记DAO为瞬态所以它不序列。
- 自己序列化dao。
Java提供了一种序列化不可序列化对象的方法。您将需要实现
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
可序列化接口包含这些方法的写入。这里是一个链接到文档(java 1.6)Serializable