清茗小记

生活随笔,心灵漫游

0%

Spring学习笔记——BeanFactory与ApplicationContext快速入门

BeanFactory 和 ApplicationContext 是 Spring 框架中管理 Bean 的两种主要接口。BeanFactory 是最基本的容器,采用延迟加载,只有在需要时才创建 Bean,适合简单应用和资源有限的环境。它提供基本的依赖注入,但不支持高级特性如事件传播和 AOP。
相比之下,ApplicationContext 是 BeanFactory 的扩展,提供更多功能。它在启动时预加载所有单例 Bean,并支持国际化、事件发布和 AOP 等特性,适合复杂的企业级应用。因此,通常推荐使用 ApplicationContext,因为它更灵活和功能强大。

BeanFactory 快速入门

  1. 新建对应的 UserService 实现类;
  2. 在 xml 文件中进行配置;
  3. 在测试代码中,调用 beanFactory 读取配置文件并获取对应的实例对象
  4. 新建并实现对应的 UserDao 文件;
  5. 更改 UserService 代码,添加注入 UserDao 相关代码
  6. 更改 xml 配置文件,通过 property 的属性,设置在 Userservice 中注入 UserDao;
  7. 在运行测试代码,在初始化中,输出结果中显示读取 xml 配置文件后工厂调用了对应的注入代码。

ApplicationContext 快速入门

ApplicationContext 成为 Spring 容器,内部封装了 BeanFactory,比 BeanFactory 功能更丰富更强大,开发中常用 ApplicationContext。

BeanFactory 与 ApplicationContext 的关系

  1. BeanFactory 是 Spring 早期的接口,成为 Spring 的 Bean 工厂,ApplicationContext 是后期更高级接口,称之为 Spring 容器。
  2. ApplicationContext 在 BeanFactory 基础上对功能进行了扩展。例如:监听功能、国际化功能等。BeanFactory 的 API 更偏向底层,ApplicationContext 的 API 大多数是对这些底层 API 的封装。
  3. Bean 创建的主要逻辑和功能都封装在 BeanFactory 中,ApplicationFactory 不仅继承了 BeanFactory,而且 ApplicationContext 内部还维护了 BeanFactory 的引用,所以 ApplicationContext 与 BeanFactory 既有继承关系,又有融合关系。
  4. Bean 的初始化时机不同,原始 BeanFactory 是在首次调用 getBean 时才进行 Bean 的创建,而 ApplicationContext 则是配置文件加载,容器一创建就将 Bean 都实例化并初始化好。