在反序列化之后,我想将单例范围的依赖项重新注入原型 Spring bean。
假设我有一个 Process bean,它依赖于一个 Repository bean。Repository bean 的作用域是单例,但 Process bean 是原型作用域的。我定期序列化进程,然后反序列化它。
class Process {
private Repository repository;
// getters, setters, etc.
}
我不想序列化和反序列化存储库。我也不想在 Process 中保存对它的引用的成员变量上放置“瞬态”,也不想对某种代理的引用,或者除了声明为存储库的普通旧成员变量之外的任何东西。
我想我想要的是让 Process 的依赖项填充一个可序列化的代理,该代理指向(具有临时引用)存储库,并且在反序列化后,可以再次找到存储库。我如何自定义 Spring 来做到这一点?
我想我可以使用代理来保存依赖项引用,就像 . 我希望我能使用这种精确的技术。但是我看到 Spring 生成的代理是不可序列化的,文档说如果我将它与单例 bean 一起使用,我会得到一个异常。
我可以在单例 bean 上使用自定义范围,当被要求提供自定义范围的 bean 时,它总是会提供代理。这是一个好主意吗?其他想法?