Spring bean中的id,name属性

今日做东东,遇到一个问题。就是一些bean是通过@Service的方式声明成为bean的。

结果在某些应用里面因为需要序列化的原因,不能直接注入bean,需要在bean加载完之后手动取出需要的bean并且应用。但是声明的bean并没有名字....

 

疑惑之下,看了一下Spring的源码,理解了一下spring bean的id,name的管理方式,理解如下:

 

    id是唯一标志一个bean的。在一个bean生成的过程中,如果有id,那么自然最好。如果没有设置id,只设置了

    name属性(name属性可以设置多个,比如: a,b,c),那么就把name属性中的第一个取出来,作为id;

    如果都ID和name都没有设置(例如:@Service),那么系统会有一个默认生成id的方式。就是段类名。

    比如:com.abc.T.class的短类名就是t(Spring取出短类名之后会进行转化,转换成java常用的参数命名形式,比        如:AtTen会被转化成atTen.).只是有一点很让我疑惑,那就是采用短类名的方式容易出现id重复的

    bean,于是在加载的时候肯定会报错。不明白为什么spring没采取长类名的方式。

 

   渴求高人指点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值