我认为这是一个微不足道的问题,但我却找不到任何讨论。
我有DeeplyNestedObject,它的对象图应该通过注入Dependency自动绘制。在这个对象图中,Dependency应该是单例作用域。
class DeeplyNestedObject {
Dependency dependency;//should be same instance as in SomeOtherObject
SomeOtherObject someOtherObject;
@Autowired
public DeeplyNestedObject(Dependency dependency,
SomeOtherObject someOtherObject){
this.dependency = dependency;
this.someOtherObject = someOtherObject;
}
}
//this is just some other class nested inside DeeplyNestedObject's object graph
class SomeOtherObject{
Dependency dependency;//should be same instance as in DeeplyNestedObject
@Autowired
public DeeplyNestedObject(Dependency dependency){
this.dependency = dependency;
}
}由于我只需要Dependency来自动生成SomeOtherObject,从而实现DeeplyNestedObject,所以这个bean配置就足够了:
@Bean
Dependency dependency(){
return new Dependency();
}不过,我有三个要求
DeeplyNestedObject应该是原型化的,所以每当我在某个地方使用对象图时,我都想要一个新的对象图实例。Dependency应该被视为中的单例--这个对象图,我无法解决以下问题:
Dependency在DeeplyNestedObject和SomeOtherObject中将有所不同)。DeeplyNestedObject及其对象图将共享同一个Dependency对象)基本上,我认为我需要的是为DeeplyNestedObject引入另一个DeeplyNestedObject容器,将依赖注入到其中,然后将其作为DeeplyNestedObject图的Singleton提供。然而,到目前为止,我还没有看到任何这样的解决方案。
发布于 2018-10-05 11:33:18
如果我将依赖范围限定为原型,我将始终得到一个新实例,即违反约束2。
我不这么认为。Spring只在注入或请求bean加载时为原型作用域bean 创建一个新实例,。
因此,如果一旦在bean容器中添加了Dependency bean,您就不会在DeeplyNestedObject中执行其他bean加载/注入DeeplyNestedObject,那么通过DeeplyNestedObject实例就会有一个不同的Dependency实例。
https://stackoverflow.com/questions/52664454
复制相似问题