spring 的工厂类
1. 工厂类 BeanFactory 和 ApplicationContext 的区别。
- ApplicationContext 是 BeanFactory 的子接口,提供了比父接口更多的功能。
- 在生成 bean 实例的时候,生成的时机是不一样的。 BeanFactory 在工厂实例化后,在调用 getBean 时创建实例。 ApplicationContext 在一加载配置文件的时候,将配置文件中所有单例模式生成的类全部实例化。
现在一般使用 ApplicationContext,不建议使用 BeanFactory。
2. 加载配置文件的两种方式:
- 工作目录下加载:ClassPathXmlApplicationContext
- 某个目录下加载:FileSystemXmlApplicationContext
3. 演示
这里以使用 BeanFactory
工厂类,和使用 FileSystemXmlApplicationContext
方法为例:
@Test
/**
* 传统方式的工厂类:BeanFactory
*/
public void demo5() {
//创建工厂类
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("e:\applicationContext.xml"));
//通过工厂获得类
UserService userService = (UserService) beanFactory.getBean("userService");
userService.sayHello();
}