实现Serializable Spring托管单例bean时是否需要readResolve()?

时间:2016-02-24 21:01:55

标签: java spring serialization

根据Effective Java书籍(第3和第77项),如果单个类implements Serializable接口,它将不再是单例,除非它覆盖readResolve()方法:

  

如第3项所述,如果在其声明中添加了“implements Serializable”字样,那么这个类[singleton Elvis类形成本书]将不再是单例。 ......

     

readResolve功能允许您将另一个实例替换为readObject ...

创建的实例

假设我有一个Spring管理的单例类,如下所示:

    @Component
    @Scope("singleton")
    public class mySingletonClass implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        @Resource private transient Service1 service1;
        @Resource private transient Service2 service2;
        ...
  }

我还需要覆盖readResolve()吗?在反序列化对象时,IoC Container是否会阻止创建新实例?我不想最终得到一个单例类的两个实例。

0 个答案:

没有答案