@Component和@Scope在春季的原型Bean之间的区别



我正在使用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. 但是,当我使用

    定义bean时
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
    

那么我不会遇到错误。在这种情况下,我得到了两个单独的豆。

请帮助我了解为什么这样?

@Component(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)

创建一个具有名称"原型"的组件

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 

是具有类名称的组件范围,因此您尝试找到一个名为" Square"的组件,但您的组件名为"原型"。

最新更新