@component和@scope在spring中的原型bean之间的区别

时间:2018-04-26 08:38:22

标签: spring

我使用ServiceLocatorFactoryBean来定位原型bean。

  1. 无论何时,我都试图通过使用

    定义bean来访问原型bean
    @Component(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    
  2. 然后我得到了

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

      定义bean时
      @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
      
    2. 然后我没有收到错误。在这种情况下,我得到两个单独的bean。

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

1 个答案:

答案 0 :(得分:0)

@Component(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)

创建一个名为" prototype"

的组件
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 

是具有类名称的组件范围,因此您尝试查找名为' square'的组件。但你有一个名为' prototype'。

的组件