快速上手Spring--5.Bean的标志符(id与name)
来源:互联网 发布:腾讯 大数据分析 编辑:程序博客网 时间:2024/04/29 18:37
又重新学习了Spring,想把自己的心得写下来,感觉有些无从下手。想来想去,还是根据Spring中文论坛翻译的《Spring Framework 开发参考手册》(1.1版本的中文版,pdf格式),来组织自己的思路。在这个阶段,我发布的关于Spring的文章,基本上都是入门级别的。相对而言,对于新手的帮助应该会更大。
虽然当前Spring的版本已经是1.2.2了,但同1.1版本的中文版相比,spring-reference还是相差不大的(尤其是前面几章的基础部分),所以采用的还是1.1版本的开发参考手册。
这个系列的文章,我准备根据开发参考手册的讲解,有针对性的增加大量的比较简单的实例,每个实例尽量只解释一个问题。下面就从3.2.4小节——《Bean的标志符(id与name)》讲起。
相关软件的配置可以参考《快速上手Spring--2.HelloWorld(1)》。
一般来说,在一个XmlBeanFactory中,定义一个bean时,采用的是<bean id="XX" class="XX">的样式,如<bean id="helloBean" class="javamxj.HelloBean">。
这里id的命名格式必须符合XML ID属性的命名规范,例如,不能以数字开头,“222”就不是合法的id值。为了解决这个问题,可以使用name属性指定一个和多个id(用逗号或者分号隔离)。
这里id的命名格式必须符合XML ID属性的命名规范,例如,不能以数字开头,“222”就不是合法的id值。为了解决这个问题,可以使用name属性指定一个和多个id(用逗号或者分号隔离)。
这里还是以HelloBean为例,这三个文件都放在包javamxj.spring.basic.aliases下。
· HelloBean
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;
}
}
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>
<!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);
}
}
}
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);
}
}
}
可以看出,使用中id属性和name属性几乎没有任何区别。
调用BeanFactory.getAliases(String)的方法时,传入的参数可以是任意一个Bean名字,输出的别名则是除去id之外的所有Bean名,如果没有指定id,则将其name属性中的第一个值指定为id。
当然,Bean的name属性不仅仅只是为了输入id属性所不允许的名字,它还有其它的用处,在后面的文章中会提及的。
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--5.Bean的标志符(id与name)
- Spring笔记之一Bean的标志符(id与name)
- Spring bean的属性id与name
- spring 中如果bean没有id或name标志 获取bean的方法
- spring 配置时 bean id 与bean name 的区别
- spring 配置时 bean id 与bean name 的区别
- spring 配置时 bean id 与bean name 的区别
- spring 配置时 bean id 与bean name 的区别
- Spring bean id 和 Spring bean name 的区别!
- spring bean id和bean name的区别
- spring bean id和bean name的区别
- spring bean id和bean name的区别
- spring bean id和name
- spring beanFactory 配置文件中bean的id与name的区别
- 快速上手Spring--7. ref的用法
- JFreeChart综合应用
- 克服毛躁的法宝就是总结
- Oracle Freelist和HWM原理探讨及相关性能优化
- 快速上手Spring--6. Singleton的使用与否
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--4.安装和使用SpringIDE
- 快速上手Spring--3. 加载Bean的配置文件
- 快速上手Spring--2.HelloWorld(2)
- jsp程序设计(二)-jsp基本语法(9)- jsp:include
- 快速上手Spring--2.HelloWorld(1)
- 快速上手Spring--1.收集的一些资料
- 利用Eclipse编辑中文资源文件
- jsp程序设计(二)-jsp基本语法(10)- jsp:plugin