Bean的命名
每个Bean 拥有一个或多个标识符,id或者name来表示。两者的区别就是name可以用特殊字符来表示 ,另外name 可以通过 , ; 来进行多个命名,一般很少用到
例子
public class BeanNameDemo {
public static void main(String[] args) {
BeanFactory beanFactory = new ClassPathXmlApplicationContext("bean-name.xml");
User user1 = (User) beanFactory.getBean("@3assdf");
System.out.println(user1);
User user2 = (User) beanFactory.getBean("asd");
System.out.println(user2);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" name="@3assdf;asd" class="org.example.beans.domain.User"/>
</beans>
Bean名称生成器
接口:
org.springframework.beans.factory.support.BeanNameGenerator
派生接口:
- DefaultBeanNameGenerator
- AnnotationBeanNameGenerator
可通过实现BeanNameGenerator来自定义Bean 名称
Bean的别名
例子:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" name="@3assdf;asd" class="org.example.beans.domain.User"/>
<alias name="@3assdf" alias="alisss"/>
</beans>
BeanFactory beanFactory = new ClassPathXmlApplicationContext("bean-name.xml");
User user3 = (User) beanFactory.getBean("alisss");