`

spring配置文件中Bean中的id和name的区别

阅读更多

在BeanFactory的配置中,<bean>是我们最常见的配置项,它有两个最常见的属性,即id和name,最近研究了一下,发现这两个属性还挺好玩的,特整理出来和大家一起分享。   
  1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab   "等都是不规范的,Spring在初始化时就会报错,诸如:   
  
  
  代码 
  org.xml.sax.SAXParseException:   Attribute   value   "?ab"   of   type   ID   must   be   a   name.     
  
  
  2.name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如"a   b","   abc",,这时,虽然初始化时不会报错,但在getBean()则会报出诸如以下的错误:   
  
  
  代码 
  org.springframework.beans.factory.NoSuchBeanDefinitionException:   No   bean   named   'a   b'   is   defined     
  
  
  3.配置文件中不允许出现两个id相同的<bean>,否则在初始化时即会报错,如:   
  
  
  代码 
  org.xml.sax.SAXParseException:   Attribute   value   "aa"   of   type   ID   must   be   unique   within   the   document.     
  
  4.但配置文件中允许出现两个name相同的<bean>,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那个 <bean>被后面同名的   <bean>覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。 
  
  5.name属性可以用,隔开指定多个名字,如<bean   name="b1,b2,b3">,相当于多个别名,这时通过getBean("a1")   getBean("a2")   getBean("a3")返回的都是同一个实例(假设是singleton的情况)   
  
  6.如果id和name都没有指定,则用类全名作为name,如<bean   class="com.stamen.BeanLifeCycleImpl">,则你可以通过   
  getBean("com.stamen.BeanLifeCycleImpl")返回该实例。 
  
  7.如果存在多个id和name都没有指定,且实例类都一样的<bean>,如:   
  
  
  代码 
  <bean   class="com.stamen.BeanLifeCycleImpl"/>       
        <bean   class="com.stamen.BeanLifeCycleImpl"/>       
        <bean   class="com.stamen.BeanLifeCycleImpl"/>     
  
  则第一个bean通过getBean("com.stamen.BeanLifeCycleImpl")获得,   
  第二个bean通过getBean("com.stamen.BeanLifeCycleImpl#1")获得,   
  第三个bean通过getBean("com.stamen.BeanLifeCycleImpl#2")获得,以此类推。   
  
  [小结]   
  当然,这些都是奇技淫巧,不足以去实践,通过id指定唯一名称才是阳光大道,其他仅作为一笑而过的见闻罢了。    

分享到:
评论
2 楼 392807718 2012-04-07  
不错,值得学习!
1 楼 wayinit 2010-05-28  
不错 挺细心的 谢谢了

相关推荐

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    spring 配置文件详解

    3. Bean 生产和实例分发:在 Spring 配置文件中,可以定义 Bean 的生产和实例分发策略,例如 singleton、prototype 等。Spring 容器将根据配置文件中的定义,生产和分发 Bean 实例。 下面是一个比较完整的 Spring ...

    spring 配置文件 归类

    本篇文章将深入探讨Spring配置文件中的归类,主要包括IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两个重要概念。 ### 1. IOC (控制反转) IOC是Spring的核心特性,...

    spring配置文件模板

    本文将深入探讨Spring配置文件`applicationContext.xml`中的关键知识点。 首先,我们来理解`applicationContext.xml`的结构和作用。这个文件是Spring IoC容器的基础,它定义了一系列Bean的定义,这些Bean就是Spring...

    spring配置文件:整理总结Spring中XML配

    ### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...

    spring配置文件详细介绍

    在Spring配置文件中,最重要的元素是`&lt;bean&gt;`。`&lt;bean&gt;`元素定义了一个Spring管理的对象,也称为bean。它包含几个关键属性,如`id`(唯一标识符)、`class`(类路径,用于实例化对象)和`name`(可选的别名)。例如...

    Spring配置文件spring-context.zip

    "Spring配置文件spring-context.zip"包含了Spring框架中的上下文配置,这是Spring管理对象及服务的核心。 `applicationContext.xml`是Spring应用上下文的主配置文件,它定义了bean的声明、bean之间的依赖关系以及...

    spring所有配置文件详解

    ### Spring配置文件详解 #### 一、引言 在Java Web开发领域,Spring框架因其强大的功能和灵活性而受到广泛欢迎。对于初学者来说,理解Spring的配置方式是至关重要的第一步。本文将详细介绍Spring中常见的配置文件...

    spring IOC反射装载bean

    在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...

    详解Spring的配置文件

    ### Spring配置文件详解 #### 一、Spring框架简介与配置文件的重要性 Spring 是一个开源的 Java 平台框架,提供了一种轻量级的应用程序开发方式。它通过依赖注入(Dependency Injection, DI)和面向切面编程...

    Spring 最全约束配置文件

    #### 二、Spring配置文件基础知识 在Spring框架中,配置文件是整个系统的核心组成部分之一。它定义了Spring容器中的各种Bean及其之间的关系。Spring支持多种类型的配置方式,其中XML配置文件是最常见的一种形式。...

    SPRING:bean配置properties

    `PropertyPlaceholderConfigurer`允许我们在Spring的配置文件中引用外部的properties文件,以实现配置信息的灵活管理和动态加载。以下是一个基本的配置示例: ```xml &lt;bean id="propertyConfigurerForAnalysis" ...

    spring配置文件

    本压缩包文件围绕"spring配置文件"展开,旨在帮助用户更好地理解和使用Spring框架的配置。 首先,Spring配置文件通常指的是XML格式的`applicationContext.xml`,这是Spring容器的主配置文件,用于定义bean的实例、...

    Spring的Bean配置

    1. **XML配置**:传统的Spring配置通常使用XML文件,如`beans.xml`,其中包含了Bean的定义,包括类名、初始化方法、属性等。例如: ```xml &lt;bean id="exampleBean" class="com.example.ExampleClass"&gt; &lt;property ...

    Spring 配置文件详解.doc

    Spring 框架中的配置文件是项目的核心组件之一,用于定义和管理应用程序中的 Bean 对象。配置文件通常以 XML 文件形式存在,用于描述 Bean 对象的定义、关系和依赖关系。在本文中,我们将详细介绍 Spring 配置文件的...

    Spring 配置文件 和详细笔记

    这些是Spring配置文件的基本知识点,通过熟练掌握和运用,我们可以有效地管理和控制Spring容器中的bean,构建出灵活且可扩展的应用程序。了解并实践这些概念,将有助于提升你在Spring框架中的开发效率和代码质量。

    Spring4 jar包和Spring配置文件

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented ...深入学习Spring4的jar包和配置文件,将使你更好地驾驭Java开发环境,提高软件工程能力。

    Spring3.0 配置文件中加载Properties文件的小例子

    在Spring 3.0框架中,配置文件是管理和组织应用程序行为的关键部分。Properties文件则常用于存储应用程序的配置参数,如数据库连接字符串、系统环境变量等。本篇将详细讲解如何在Spring 3.0的配置文件中加载...

    Spring 3.1配置文件示例(备忘)

    首先,`applicationContext.xml` 是 Spring 容器的配置文件,它定义了容器中 Bean 的实例化、装配和管理规则。在 Spring 3.1 中,XML 配置仍然是主流,尽管有基于注解的配置方式逐渐流行。Bean 的定义通常包括 ID...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...

Global site tag (gtag.js) - Google Analytics