请解释 Spring 中 BeanFactory 的概念、职责以及它与其他容器组件的关系。
考察说明
考查对 Spring IoC 容器核心接口 BeanFactory 的理解,包括定位、主要功能和与 ApplicationContext 的差异。
回答思路
- 【回答框架 1】BeanFactory 是 Spring IoC 容器的根接口,负责管理 Bean 的实例化、装配和生命周期。它定义了获取 Bean、判断是否包含 Bean、获取 Bean 类型等核心方法,是依赖注入的底层基础设施。
- 【回答框架 2】BeanFactory 采用延迟加载策略,只有在调用 getBean 或注入时才会创建 Bean 实例。它支持作用域、循环依赖处理、Bean 后处理器等机制,但默认不提供 AOP、国际化、事件发布等高级功能。
- 【回答框架 3】ApplicationContext 是 BeanFactory 的子接口,在 BeanFactory 基础上增加了消息资源、事件机制、环境抽象等功能,并通常预加载单例 Bean。实际项目大多直接使用 ApplicationContext,而非原生 BeanFactory。
- 【回答框架 4】在某些场景下,如自定义轻量容器或需要极致控制时,可以单独使用 BeanFactory,但需要手动配置资源加载和生命周期回调。理解两者的关系有助于排查容器初始化相关问题。
- 【关键点 1】BeanFactory 是 IoC 容器根接口,负责 Bean 的注册与管理。
- 【关键点 2】默认延迟加载,通过 getBean 按需创建实例。
- 【关键点 3】ApplicationContext 继承 BeanFactory 并提供更多企业级特性。
- 【关键点 4】主要方法包括 getBean、containsBean、isSingleton 等。
- 【易错点 1】混淆 BeanFactory 与 ApplicationContext 的加载时机和功能边界。
- 【易错点 2】误认为 BeanFactory 支持所有容器特性,忽略其缺少 AOP 自动代理等扩展。
- 【易错点 3】忽视 BeanFactory 的延迟加载特性,导致依赖注入时机理解错误。