Spring依赖注入可序列化的bean

kay*_*ahr 6 java serialization spring dependency-injection

我有一个不可序列化的服务类和一个必须可序列化但必须有权访问此服务类的bean:

class SomeBean implements Serializable
{
    private StuffFactory factory;

    @Autowired
    public SomeBean(StuffFactory factory)
    {
        this.factory = factory;
    }

    public getOther()
    {
        return this.factory.getSomeOtherStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为现在SomeBean该类不再可序列化.在Spring中解决这个问题的正确方法是什么?当我使factory字段瞬态时,我在反序列化时松开注入的工厂实例,或不?当我StuffFactory也可以序列化时,这个类将不再是一个单例,因为每个SomeBean实例在反序列化之后都会拥有它自己的工厂.

Rei*_*ica 0

也许有一个SomeBeanFactory

class SomeBeanFactory {
    @Autowired
    private StuffFactory stuffFactory;

    public SomeBean deserialize(...) {
        SomeBean someBean = ...;
        someBean.setStuffFactory(stuffFactory);
        return someBean;
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,您需要为factoryin创建一个设置器SomeBean