一句话概括
ObjectProvider<T> 是 Spring 4.3 引入的依赖注入的"懒加载 + 安全容器"——它不直接给你 Bean 实例,而是给你一个"按需获取"的提供者,解决了可选依赖、延迟初始化、多 Bean 集合等痛点。
解决什么问题?
传统 @Autowired 的痛点 |
ObjectProvider 怎么解 |
|---|---|
| 依赖的 Bean 不存在 → 启动直接报错 | getIfAvailable() 返回 null,优雅降级 |
| 想延迟获取 Bean(避免循环依赖/启动开销) | 调用时才真正获取,天然懒加载 |
| 同类型有多个 Bean,想按条件选一个 | getIfAvailable() + 自定义条件 / stream() 筛选 |
| 想拿同类型的所有 Bean | iterator() / stream() 遍历全部 |
2026/4/30大约 3 分钟