`
NicholasBugs
  • 浏览: 50690 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

spring配置文件中的 id和name

阅读更多
今天在分析问题时发现一个大家平时都不太注意的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"

如下:
配置文件:
   <bean class="com.xxx.UserInfo">
       <property name="accountName" value="no-id-no-name0"></property>
   </bean>
   
   <bean class="com.xxx.UserInfo">
       <property name="accountName" value="no-id-no-name1"></property>
   </bean>
   
   <bean class="com.xxx.UserInfo">
       <property name="accountName" value="no-id-no-name2"></property>
   </bean>

  
获取bean的方式:
    UserInfo u4 = (UserInfo)ctx.getBean("com.xxx.UserInfo");
    UserInfo u5 = (UserInfo)ctx.getBean("com.xxx.UserInfo#1");
    UserInfo u6 = (UserInfo)ctx.getBean("com.xxx.UserInfo#2");
分享到:
评论
2 楼 hudazheng 2015-08-21  
  
1 楼 hxt2015 2015-08-13  
    

相关推荐

    第五讲spring配置文件.rar

    配置文件详解 alias:为bean设置别名;可以设置多个别名 id是bean的标识符,要唯一。如果没有配置id,name是默认标识符,如果配置了id,又配置了name,那么name是别名, name可以设置多个别名,分隔符可以是空格 ...

    spring applicationContext 配置文件

    &lt;description&gt;Spring公共配置文件 &lt;!-- mes 的數據庫 --&gt; &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt; &lt;property name="driverClass" value="oracle....

    Spring2.5的国际化配置

    如:我的配置文件叫message-info.properties,message-info_zh_CN.properties等等 只要有了这个配置,然后配置JSP渲染器为JSTL支持的,那么在你的JSP文件中使用fmt标记就可以实现客户浏览器语言国际化了。 如:...

    SpringBoot在yml配置文件中配置druid的操作

    最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid中配置filter: spring: ##数据库连接信息 datasource: url: jdbc:mysql://localhost:3306/young username: root password: root driver-class...

    spring五种事务配置demo

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会...

    JSP Spring配置文件中传值的实例详解

    JSP Spring配置文件中传值的实例详解 通过spring提供方法,在配置文件中取传值  调用get方法   targetObject :指定调用的对象  propertyPath:指定调用那个getter方法  例1: public class Test1 { ...

    整合struts2和spring源代码(可以直接在tomcat中运行)

    当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到,则由Spring创建,否则由Struts 2框架自身创建,然后由Spring来装配。Spring插件具体有如下几个作用:...

    Spring-IOC手动模拟实现-利用dom4解析xml文件

    通过dom4j解析配置文件,得到list集合(存放Bean标签的id和class属性) * 3.通过反射实例化得到对应的实例化对象,放置在map中(map是键值对,可根据id获取值)(遍历list获取对应的class属性,利用class。formName...

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...

    Spring AOP配置源码

    @Component("userService")等价于在spring配置文件中定义一个&lt;bean id="userService"/&gt; @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....

    spring.net中文手册在线版

    4.2.5.对象标识符(id和name) 4.2.6.Singleton和Prototype 4.3.属性,协作对象,自动装配和依赖检查 4.3.1.设置对象的属性和协作对象 4.3.2.构造器参数解析 4.3.2.1.根据参数类型匹配构造器参数 4.3.2.2.根据参数...

    Spring MVC 入门实例

    上面, 我们在 web.xml 文件中告诉 ContextLoaderListener, 我们还有另外两个配置文件 /WEB-INF/database.xml 和 /WEB-INF/applicationContext.xml. applicationContext.xml: 1 2 &lt;!DOCTYPE beans PUBLIC "-//...

    Spring.net框架

    从中我们可以看出,我们实现了一个IocInCSharp.ConfigHandler类,用来处理配置文件中IocInCSharp\ objects结点中的内容。ConfigHandler类将根据该结点下的内容处理并创建一ConfigInfo对象(关于ConfigInfo、 ...

    Spring 自定义注解注入properties文件的值jar包

    在xml配置文件中,这样加载properties文件 &lt;bean id="propertyConfigurer" class="com.better517na.propertiesComponent.business.ExtendedPropertyPlaceholderConfigurer"&gt; &lt;property name="locations"&gt; ...

    Spring的学习笔记

    二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、 注入类型(Injecting ...

    JAVA Spring框架实现登陆查询 完整搭建框架方法的word文档 包含mysql文件

    3 导入配置文件,将如下配置文件导入到src下面 3.1 修改generatorConfig.xml文件,这个是mybatis的逆向工程,修改数据库名,用户名,密码,对应的包名,对应的项目。如图 3.2 修改jdbc.properits文件, 3.3 log...

    Spring入门笔记.md

    #### 写我们的配置文件 一般都是application.xml文件,放在idea的resource目录下,是一个bean注册的配置文件 内容如下: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; xmlns:xsi=...

    springmybatis

    在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。 运行这个测试程序,就可以看到结果了。 除非...

    CXF WebService整合Spring示例工程代码demo

    -- 设置Spring容器加载配置文件路径 --&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;classpath*:applicationContext-server.xml &lt;listener-class&gt;org.springframework.web.util....

Global site tag (gtag.js) - Google Analytics