========
Bean别名
========
在工厂配置文件中,可以通过bean标签的name属性为Bean设置别名。
/src/main/resources/applicationContext.xml:
...
... \____________/
|
Bean的三个别名
/src/test/java/cn/tedu/hellospring/StudentTest.java:
class StudentTest {
...
@org.junit.jupiter.api.Test
void test8() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
Student student = (Student) applicationContext.getBean(
/*"stu"*//*"st"*/"s");
System.out.println(student);
}
...
}
id和name:
- 都可以作为工厂方法getBean()的参数,用于获取Bean对象
- name可以替代id
- 一个Bean可以同时拥有多个别名,但ID只能有一个
- id属性的值必须是以字母开头的,由字母、数字或连字符组成的字符序列
- name属性的值可以是由任意字符组成的序列,可用于某些特殊的命名场景
- 比如某些环境可能要求Bean的名字必须以“/”开头
// 错误
// 正确
- 现代XML对id属性值的限制已经不存在了
/src/main/resources/applicationContext.xml:
...
...
- 优先使用id,name基本用不着
- 判断工厂配置文件中是否包含特定Bean
- containsBeanDefinition()方法的参数只能传id
- containsBean()方法的参数既可以传id也可以传name
例程:HelloSpring