========
工厂方法
========
Spring工厂创建的对象称为Bean或者组件(Component)。
每个Bean在工厂配置文件中占一个Bean标签:
一个Bean
___________________________|__________________________
/ \
\__________/ \_________________________________/
| |
Bean的ID Bean的类型
ApplicationContext接口方法:
- Object getBean(String s)
根据ID获取Bean,返回Object类型的对象,需要类型转换
- T getBean(String s, Class aClass)
根据ID获取Bean,返回指定类型的对象,无需类型转换
- T getBean(Class aClass)
根据指定类型获取Bean,该类型的Bean在工厂配置文件中只能有一个
- String[] getBeanDefinitionNames()
获取工厂配置文件中所有Bean的ID
- String[] getBeanNamesForType(Class> aClass)
获取工厂配置文件中所有指定类型的Bean的ID
- boolean containsBeanDefinition(String s)
判断工厂配置文件中是否包含指定ID的Bean
- boolean containsBean(String s)
判断工厂配置文件中是否包含指定ID或别名的Bean
/src/test/java/cn/tedu/hellospring/StudentTest.java:
class StudentTest {
@org.junit.jupiter.api.Test
void test1() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
Student student = (Student) applicationContext.getBean("student");
System.out.println(student);
}
@org.junit.jupiter.api.Test
void test2() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
Student student = applicationContext.getBean("student", Student.class);
System.out.println(student);
}
@org.junit.jupiter.api.Test
void test3() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
Student student = applicationContext.getBean(Student.class);
System.out.println(student);
}
@org.junit.jupiter.api.Test
void test4() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
String[] beanNames = applicationContext.getBeanDefinitionNames();
for (String beanName : beanNames)
System.out.println(beanName);
}
@org.junit.jupiter.api.Test
void test5() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
String[] beanNames =
applicationContext.getBeanNamesForType(Student.class);
for (String beanName : beanNames)
System.out.println(beanName);
}
@org.junit.jupiter.api.Test
void test6() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
System.out.println(
applicationContext.containsBeanDefinition("student"));
}
@org.junit.jupiter.api.Test
void test7() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("/applicationContext.xml");
System.out.println(
applicationContext.containsBean("student"));
}
}
例程:HelloSpring