Java面试题更新 2026-08-03

请解释 Spring 框架中 ObjectFactory 的作用与用法。

考察说明

考查对 Spring 延迟获取 Bean 机制的掌握程度。

回答思路

  1. 【回答框架 1】ObjectFactory 是 Spring 提供的一个泛型工厂接口,定义唯一方法 T getObject(),用于延迟获取指定类型的 Bean。
  2. 【回答框架 2】与直接注入 Bean 不同,ObjectFactory 在注入时不立即创建或查找 Bean,而是在调用 getObject() 时才触发依赖解析,从而避免循环依赖和减少初始化开销。
  3. 【回答框架 3】适用场景包括:需要多个候选 Bean、可选依赖、或延迟初始化以避免启动时的大量创建。Spring 内部在循环依赖处理中也常使用 ObjectFactory。
  4. 【回答框架 4】使用方式:在字段或构造器上直接注入 ObjectFactory<T>,Spring 容器会注入一个代理对象,调用 getObject() 时返回当前容器中对应的 Bean 实例。
  5. 【关键点 1】ObjectFactory 延迟获取 Bean,调用 getObject() 时才解析。
  6. 【关键点 2】可用于解决循环依赖和优化启动性能。
  7. 【关键点 3】注入 ObjectFactory 比注入具体 Bean 更灵活,支持运行时重新获取。
  8. 【易错点 1】误认为 ObjectFactory 会缓存 Bean 实例,实际上每次 getObject() 可能返回不同实例(视作用域而定)。
  9. 【易错点 2】混淆 ObjectFactory 与 ObjectProvider,后者是 Spring 5 增强版,提供流式 API 和可选处理。