Spring:使用对不可序列化bean的引用序列化对象

时间:2010-10-19 02:39:38

标签: serialization spring-mvc

下面的课程(我的UserDetailsService实施)与会话绑定,会话被序列化(在谷歌应用引擎中)。

我最近看了一个Spring 3演示文稿,说明如下所示的bean userDao是由代理加载的,它不会序列化bean,但只存储名称并重新获取引用关于反序列化。

但是使用下面的代码我得到NotSerializableException: com.prepayproxy.dataaccesslayer.GAEUserDao

@Service("springUserDetailsService")
public class SpringUserDetailsService implements UserDetailsService, Serializable {
    @Resource(name="userDao")
    private IUserDao userDao;
    //...
}

1 个答案:

答案 0 :(得分:2)

您有两个选择:

  1. 将dao标记为瞬态,因此不会序列化。
  2. 自己序列化dao。
  3. Java提供了一种序列化非可序列化对象的方法。您需要实施

    
     private void writeObject(java.io.ObjectOutputStream out)
         throws IOException
     private void readObject(java.io.ObjectInputStream in)
         throws IOException, ClassNotFoundException;
    
    

    Serializable接口包括这些方法的写法。这是docs(java 1.6)Serializable

    的链接