BeanFactory 是首次调用 getBean 时才实例化并初始化 Bean。
// 创建 BeanFactory
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
// 创建 BeanDefinitionReader
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
// 加载配置文件
reader.loadBeanDefinitions("beans.xml");
// 获取 Bean 对象
beanFactory.getBean("userService");
ApplicationContext 是配置文件加载,容器一创建就实例化并初始化 Bean。
// 创建 ApplicationContext,加载配置文件,实例化并初始化 Bean
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取 Bean 对象
ac.getBean("userService");
在 Spring 基础环境下,3 个常用的 ApplicationContext 作用如下:
- ClassPathXmlApplicationContext
- 加载类路径下的 XML 配置的 ApplicationContext
- FileSystemXmlApplicationContext
- 加载磁盘路径下的 XML配置的 ApplicationContext
- AnnotationConfigApplicationContext
- 加载注解配置类的 ApplicationContext
Spring Web 环境下,2 个常用的 ApplicationContext 作用如下:
- XmlWebApplicationContext
- Web 环境下,加载类路径下的 XML 配置的 ApplicationContext
- AnnotationConfigWebApplicationContext
- Web 环境下,加载注解配置类的 ApplicationContext