zoukankan      html  css  js  c++  java
  • spring bean id和bean 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"

    如下:
    配置文件:

    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"); 

      相关:在配置spring标签是name和id的区别

  • 相关阅读:
    linux RCU锁机制分析
    什么是上下文切换
    Linux内核哈希表分析与应用
    linux内核中hlist_head和hlist_node结构解析
    如何使用queue_delayed_work函数
    《Linux内核设计与实现》读书笔记(十)- 内核同步方法
    自旋锁,读写锁和顺序锁的实现原理
    C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
    深入理解linux系统下proc文件系统内容
    以太网最小帧长为什么是64字节
  • 原文地址:https://www.cnblogs.com/langtianya/p/4701806.html
Copyright © 2011-2022 走看看