Bean标签提供了两种标识Bean的Attribute:ID和Name,那它们之间到底是什么区别呢?
首先应当鼓励使用ID属性来标识一个Bean,因为ID是XML IDREF 类型的,这就使得XML解析器可很容易的根据DTD来验证其被引用的有效性.但这也带来了ID属性在命名规则方面的限制. ID属性值只允许以字母开头,其后只能为字母或数字或”-“的集合.所以在有的时候为了让Bean的命名更符合我们的需求(比如将Bean的名称为URL”myserviceservicename”),Name属性就成了我们比较好的选择.
Name属性允许为Bean指定多个名称,如:
bean id=name1 name=name2,name3,name4 class=java.lang.String
在LookUp Bean时会优先根据Name属性进行匹配
在XML文件中我们定义:
bean id=cat calss=com.fwh.prospring.ch4.naming.Cat
bean name=cat calss=com.fwh.prospring.ch4.naming.Dog
当我们factory.getBean(“cat”)时,它返回的会是Dog对象的实例.
首先应当鼓励使用ID属性来标识一个Bean,因为ID是XML IDREF 类型的,这就使得XML解析器可很容易的根据DTD来验证其被引用的有效性.但这也带来了ID属性在命名规则方面的限制. ID属性值只允许以字母开头,其后只能为字母或数字或”-“的集合.所以在有的时候为了让Bean的命名更符合我们的需求(比如将Bean的名称为URL”myserviceservicename”),Name属性就成了我们比较好的选择.
Name属性允许为Bean指定多个名称,如:
bean id=name1 name=name2,name3,name4 class=java.lang.String
在LookUp Bean时会优先根据Name属性进行匹配
在XML文件中我们定义:
bean id=cat calss=com.fwh.prospring.ch4.naming.Cat
bean name=cat calss=com.fwh.prospring.ch4.naming.Dog
当我们factory.getBean(“cat”)时,它返回的会是Dog对象的实例.