首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring:如何处理spring容器中的原型bean,单例对象图的某个子部分的作用域?

Spring:如何处理spring容器中的原型bean,单例对象图的某个子部分的作用域?
EN

Stack Overflow用户
提问于 2018-10-05 11:18:39
回答 1查看 83关注 0票数 1

我认为这是一个微不足道的问题,但我却找不到任何讨论。

我有DeeplyNestedObject,它的对象图应该通过注入Dependency自动绘制。在这个对象图中,Dependency应该是单例作用域。

代码语言:javascript
复制
 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配置就足够了:

代码语言:javascript
复制
@Bean
Dependency dependency(){
     return new Dependency();
 }

不过,我有三个要求

  1. DeeplyNestedObject应该是原型化的,所以每当我在某个地方使用对象图时,我都想要一个新的对象图实例。
  2. Dependency应该被视为中的单例--这个对象图,
  3. 每个DeeplyNestedObject都应该有自己的依赖实例。

我无法解决以下问题:

  • 如果我将依赖范围定义为原型,我将始终得到一个新的依赖实例,即违反约束2 (Dependency在DeeplyNestedObject和SomeOtherObject中将有所不同)。
  • 如果我将依赖范围定义为单例,那么我将违反约束3(每个DeeplyNestedObject及其对象图将共享同一个Dependency对象)

基本上,我认为我需要的是为DeeplyNestedObject引入另一个DeeplyNestedObject容器,将依赖注入到其中,然后将其作为DeeplyNestedObject图的Singleton提供。然而,到目前为止,我还没有看到任何这样的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2018-10-05 11:33:18

如果我将依赖范围限定为原型,我将始终得到一个新实例,即违反约束2。

我不这么认为。Spring只在注入或请求bean加载时为原型作用域bean 创建一个新实例,

因此,如果一旦在bean容器中添加了Dependency bean,您就不会在DeeplyNestedObject中执行其他bean加载/注入DeeplyNestedObject,那么通过DeeplyNestedObject实例就会有一个不同的Dependency实例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52664454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档