博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring bean id和bean name的区别
阅读量:5049 次
发布时间:2019-06-12

本文共 1187 字,大约阅读时间需要 3 分钟。

今天在分析问题时发现一个大家平时都不太注意的spring 配置问题,发出来分享下:

首先澄清一个概念:
同名bean:多个bean 有相同的 name 或者 id,称之为同名bean
<bean> 的id 和 name的区别
id和name都是spring 容器中中bean 的唯一标识符。
id: 一个bean的唯一标识  , 命名格式必须符合XML ID属性的命名规范
name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号或者分号或者空格隔开。如果没有id,则name的第一个名称默认是id
spring 容器如何处理同名bean?
    同一个spring配置文件中,bean的 id、name是不能够重复的,否则spring容器启动时会报错。
    如果一个spring容器从多个配置文件中加载配置信息,则多个配置文件中是允许有同名bean的,并且后面加载的配置文件的中的bean定义会覆盖前面加载的同名bean。
spring 容器如何处理没有指定id、name属性的bean?
如果 一个 <bean> 标签未指定 id、name 属性,则 spring容器会给其一个默认的id,值为其类全名。
如果有多个<bean> 标签未指定 id、name 属性,则spring容器会按照其出现的次序,分别给其指定 id 值为 "类全名#1", "类全名#2"
如下:
配置文件:

Java代码  
  1. <bean class="com.xxx.UserInfo">  
  2.     <property name="accountName" value="no-id-no-name0"></property>  
  3. </bean>  
  4.   
  5. <bean class="com.xxx.UserInfo">  
  6.     <property name="accountName" value="no-id-no-name1"></property>  
  7. </bean>  
  8.   
  9. <bean class="com.xxx.UserInfo">  
  10.     <property name="accountName" value="no-id-no-name2"></property>  
  11. </bean>  

  
获取bean的方式:

Java代码  
  1. UserInfo u4 = (UserInfo)ctx.getBean("com.xxx.UserInfo");  
  2. UserInfo u5 = (UserInfo)ctx.getBean("com.xxx.UserInfo#1");  
  3. UserInfo u6 = (UserInfo)ctx.getBean("com.xxx.UserInfo#2"); 

    相关:

转载于:https://www.cnblogs.com/langtianya/p/4701806.html

你可能感兴趣的文章
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>
C#:System.Array简单使用
查看>>
「Foundation」集合
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
Linux常用命令总结
查看>>