======== 工厂方法 ======== 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