首页 > 解决方案 > Spring中原型bean的@component和@scope之间的区别

问题描述

我正在使用 ServiceLocatorFactoryBean 来定位原型 bean。

  1. 无论何时,我都尝试通过定义 bean 来访问原型 bean

    @Component(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    

然后我得到

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'square' available. 
  1. 但是,当我使用

    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
    

那么我没有收到错误。在这种情况下,我得到了两个单独的豆子。

请帮助我理解为什么会这样?

标签: spring

解决方案


@Component(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)

创建一个名为“prototype”的组件

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 

是一个名称来自类的组件范围,因此您尝试找到一个名为“square”的组件,但您有一个名为“prototype”的组件。


推荐阅读