Spring笔记之一Bean的标志符(id与name)
2008-01-22 15:14
453 查看
一般来说,在一个XmlBeanFactory中,定义一个bean时,采用的是<bean id="XX" class="XX">的样式,如<bean id="helloBean" class="javamxj.HelloBean">。
这里id的命名格式必须符合XML ID属性的命名规范,例如,不能以数字开头,“222”就不是合法的id值。为了解决这个问题,可以使用name属性指定一个和多个id(用逗号或者分号隔离)。
· 配置文件
在这个Bean中,除了id属性,还含有name属性,其值为“2hello”、“javamxj@yahoo.com.cn”,因为以数字开头、含有特殊字符“@”,它们是不能用在id属性中的
· 测试程序:
可以看出,使用中id属性和name属性几乎没有任何区别。
调用BeanFactory.getAliases(String)的方法时,传入的参数可以是任意一个Bean名字,输出的别名则是除去id之外的所有Bean名,如果没有指定id,则将其name属性中的第一个值指定为id。
当然,Bean的name属性不仅仅只是为了输入id属性所不允许的名字,它还有其它的用处,
这里id的命名格式必须符合XML ID属性的命名规范,例如,不能以数字开头,“222”就不是合法的id值。为了解决这个问题,可以使用name属性指定一个和多个id(用逗号或者分号隔离)。
HelloBean.java |
package javamxj.spring.basic.aliases; public class HelloBean { private String helloWorld = "Hello!World!"; public void setHelloWorld(String helloWorld) { this.helloWorld = helloWorld; } public String getHelloWorld() { return helloWorld; } } |
在这个Bean中,除了id属性,还含有name属性,其值为“2hello”、“javamxj@yahoo.com.cn”,因为以数字开头、含有特殊字符“@”,它们是不能用在id属性中的
bean.xml |
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="helloBean" name="2hello,javamj@yahoo.com.cn" class="javamxj.spring.basic.aliases.HelloBean"> <property name="helloWorld"> <value>Hello! Javamxj!</value> </property> </bean> </beans> |
Main.java |
package javamxj.spring.basic.aliases; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class Main { public static void main(String[] args) { Resource res = new ClassPathResource( "javamxj/spring/basic/aliases/bean.xml"); BeanFactory factory = new XmlBeanFactory(res); HelloBean helloBean = (HelloBean) factory.getBean("helloBean"); HelloBean helloBean2 = (HelloBean) factory.getBean("2hello"); HelloBean helloBean3 = (HelloBean) factory.getBean("javamj@yahoo.com.cn"); System.out.println(helloBean.getHelloWorld()); // 验证是否指向同一个Bean System.out.println((helloBean == helloBean2)); System.out.println((helloBean == helloBean3)); // 输出这个Bean的别名 String[] aliases = factory.getAliases("helloBean"); for (String str : aliases) { System.out.println(str); } } } |
调用BeanFactory.getAliases(String)的方法时,传入的参数可以是任意一个Bean名字,输出的别名则是除去id之外的所有Bean名,如果没有指定id,则将其name属性中的第一个值指定为id。
当然,Bean的name属性不仅仅只是为了输入id属性所不允许的名字,它还有其它的用处,
相关文章推荐
- spring 中如果bean没有id或name标志 获取bean的方法
- Spring学习笔记之Spring中applicationContext.xml的bean里的id和name属性区别
- Spring配置中<bean>的id和name属性区分
- spring 配置时 bean id 与bean name 的区别
- 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题
- Spring中applicationContext.xml的bean里的id和name属性区别
- 快速上手Spring--5.Bean的标志符(id与name)
- spring bean id和bean name的区别
- Spring配置bean时id和name
- 快速上手Spring--5.Bean的标志符(id与name)
- [JAVA][Spring]Spring1Bean的命名(id和name区别)
- [JAVA][Spring]Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
- spring中的Bean的id和name的区别
- 快速上手Spring--5.Bean的标志符(id与name)
- Spring配置bean时id和name的相关讨论
- Spring 自学系列之IOC-4 【bean的标识id VS name】
- Spring中Bean的命名 (id 和name)
- Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
- spring配置文件中bean的属性name与id的区别
- Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别