• Bean标签中ID和Name的区别


         同一个项目的spring配置文件中,id属性值是唯一。

    总的来说就像身份证号和人名的区别,每个bean的id(身份证号)都不同,但可以有相同的name (人名)。 id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。 name属性则没有这些限定,你可以使用几乎任何的名称。

    1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错。

    2.name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如"a b"," abc",,这时,虽然初始化时不会报错,但在getBean()则会报错。

    3.配置文件中不允许出现两个id相同的<bean>,否则在初始化时即会报错。

    4.但配置文件中允许出现两个name相同的<bean>,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那 个<bean>被后面同名的   <bean>覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。


    5.name属性可以用,隔开指定多个名字,如<bean name="b1,b2,b3">,相当于多个别名,这时通过getBean("a1") getBean("a2") getBean("a3")返回的都是同一个实例


     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")获得,以此类推。

  • 相关阅读:
    oracle 10g 免安装客户端在windows下配置
    sql2005 sa密码
    使用windows live writer 有感
    windows xp SNMP安装包提取
    汉化groove2007
    迁移SQL server 2005 Reporting Services到SQL server 2008 Reporting Services全程截图操作指南
    foxmail 6在使用中的问题
    AGPM客户端连接不上服务器解决一例
    SpringSource Tool Suite add CloudFoundry service
    Java 之 SWing
  • 原文地址:https://www.cnblogs.com/bailanglang/p/13555994.html
Copyright © 2020-2023  润新知