在SSH的配置文件里会看见bean id和bean name 这两个有啥区别吗 各自的用法呢
简单点说 就两句话:
id属性允许我们指定一个Bean的id,并且它在XML DTD中作为一个真正的XML元素的ID属性被标记,所以XML解析器能够在其他元素指向它的时候做一些额外的效验;
name属性则与id相反,如果我们在开发中有必要使用一些[color=red]非法的字符[/color],那么我们可以通过name属性指定一个或多个id。当我们指定多个id时要用逗号(,)或者(;)来进行分隔。
你是说spring?
[url]http://stamen.iteye.com/blog/24525[/url]
通俗点讲就是id是唯一的,有唯一性,而name表示的是这个bean的别名。。
就和古人的名字一样,比如李白,这是他的id,他的字“太白”是他的别名。。
1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错
2.name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如"a b"," abc"
3.配置文件中不允许出现两个id相同的,否则在初始化时即会报错
4.但配置文件中允许出现两个name相同的,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那 个被后面同名的 覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。
5.name属性可以用,隔开指定多个名字,如,相当于多个别名,这时通过getBean("a1") getBean("a2") getBean("a3")返回的都是同一个实例
6.如果id和name都没有指定,则用类全名作为name,如,则你可以通过
getBean("com.stamen.BeanLifeCycleImpl")返回该实例。
7.如果存在多个id和name都没有指定,且实例类都一样的,如:
代码
则第一个bean通过getBean("com.stamen.BeanLifeCycleImpl")获得,
第二个bean通过getBean("com.stamen.BeanLifeCycleImpl#1")获得,
第三个bean通过getBean("com.stamen.BeanLifeCycleImpl#2")获得,以此类推。