zoukankan      html  css  js  c++  java
  • 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数据库的权限、用户、角色管理
    linux address already in use:make_sock:could not bind to address [::]:80
    linux上ln命令详细说明
    IPhone多线程下载器,支持多种主题
    Android 开发从入门到精通
    iOS开发视频教程下载/iphone开发视频教程下载
    oscocos2d游戏开发基础进度条开发笔记
    分享10个Android游戏源码,要的赶紧来哈
    android中点中overlay弹出带尾巴的气泡的实现
    分享20个Android游戏源码,希望大家喜欢哈!
  • 原文地址:https://www.cnblogs.com/bailanglang/p/13555994.html
Copyright © 2011-2022 走看看