当前位置: 首页 > 面试题库 >

Spring Autowire和原型范围

马寒
2023-03-14
问题内容

我有一个名为Bar的类,带有以下注释: @Configurable(autowire = Autowire.BY_TYPE)

在私人成员上,我具有以下注释:

@Autowired(required = true)
private Foo foo;

在春季配置中,我有一个Foo类的bean。如果用scope="prototype"它定义的bean 不起作用,则出现以下异常:

NoSuchBeanDefinitionException:找不到依赖项为Foo的匹配bean:期望至少有1个有资格作为此依赖项的自动装配候选的bean

一旦我将注入的bean作用域更改为"singleton"正常工作。

是否自动布线原型作用域的bean?

有什么解决方法(除了手动获取bean之外)?

在此先感谢Avner


问题答案:

以下链接为此类情况提供了替代解决方案:

  1. http://whyjava.wordpress.com/2010/10/30/spring-scoped-proxy-beans-an-alternative-to-method-injection/
  2. http://benkiew.wordpress.com/2012/04/22/spring-2-5-x-create-prototype-in​​stances-from-code/

第一个链接谈论添加到Foo:

@Component
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
class Foo

每次调用都会导致一个新实例。



 类似资料:
  • 问题内容: 假设两个类为ClassA和ClassB。假设ClassB依赖于ClassA。在配置文件中,如果将ClassA的范围定义为单例,将ClassB的范围定义为Prototype,那么每次创建ClassA的bean实例时,ClassB的实例会发生什么?每次返回ClassA实例时,将返回相同的ClassB实例还是创建新实例? 谢谢!!! 问题答案: 如果ClassB是原型,则始终创建ClassB

  • 我有一个带有@service和@Scope(“原型”)的服务类。我希望此服务的行为类似于控制器类中的原型。以下是我如何使用它: 以下是服务类别: 我使用自动配置属性运行spring boot。我比较“emailService”对象是否相同,得到的是相同的一个对象。这意味着@Scope(“prototype”)不能像预期的那样与@Service一起工作。你看到这里有什么问题吗?我忘了添加一些代码了吗

  • 但是当我尝试时,我会遇到以下异常。 我应该如何在Spring中Autowire泛型类型?

  • 嗯,很可能没有任何谜团,但我只是不够聪明,不知道我的问题是什么。然而,通常它毕竟是谜团! 很抱歉进行介绍,我的问题是原型范围似乎不适合我。我创建了一个带有Spring集成流的REST服务(流前面有一个http入站网关)。大多数bean的作用域都是原型。我通过使用线程调用它十次来测试流。此外,我还记录了bean引用(只需在被调用的对象中打印“this”),并且我看到了十次相同的引用! 据我所知,这意

  • 本文向大家介绍单例和原型bean范围之间的区别。,包括了单例和原型bean范围之间的区别。的使用技巧和注意事项,需要的朋友参考一下 Spring框架支持五种类型的bean作用域- 辛格尔顿 原型 请求 届会 全球会议 根据春季文件- Singleton-每个Spring IoC容器返回一个bean实例。该单个实例存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高

  • 问题内容: “ API参考范围”页面显示: 范围可以从父范围继承。 该开发者指南范围页说: 范围(典型地)从其父范围继承属性。 那么,子作用域是否总是从原型上继承自其父作用域? 有例外吗? 当它继承时,是否总是正常的JavaScript原型继承? 问题答案: 子作用域通常是从其父作用域继承的,但并非总是如此。该规则的一个例外是带有的指令-这会创建一个“隔离”作用域,该作用域不会原型继承。创建“可重