Spring 学习1--Spring bean的id和name

相关版本信息:spring 4.2.6。

spring源码中关于bean的操作有beanName的变量,没有发现beanId变量,个人结论是:严格意义上讲没有beanId,单例模式(scope作用域)下beanName是作为HashMap的key。
1.bean的三种创建方式。xml方式创建的beanNme。BeanDefinitionParserDelegate.parseBeanDefinitionElement() 方法中String beanName = id,这时生成的BeanDefinitionHolder,后续创建bean时用;
@component 方式创建的bean。 ClassPathBeanDefinitionScanner.doScan()中String beanName = this.beanNameGenerator.generateBeanName(candidate, this.registry);;
@bean 方式创建bean. ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod()中 String beanName = (names.size() > 0 ? names.remove(0) : methodName);;
这三种方式创建的BeanDefinitionHolder都传的beanName。
2.BeanFactory中获取bean。
AbstractBeanFactory.doGetBean()中final String beanName = transformedBeanName(name);

3.有BeanNameAware接口,没有BeanIdAware接口。综合以上3点,beanName更符合Spring源码里对bean的称呼。
4.那为什么beanId的印象。主要是源自xml定义bean。
<bean id="car1" class="ioc.Car">
        <property name="name" value="宝马"></property>
        <property name="price" value="500000"></property>
    </bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值