控制反转 (Inversion of Control) 与依赖注入 (Dependency Injection)
控制反转 (Inversion of Control):将对象的创建和管理交给 Spring 容器,而不是由开发者手动创建。
依赖注入 (Dependency Injection):IoC 的一种实现方式,通过构造器、Setter 或字段将依赖注入到对象中。
Spring 容器中管理的所有 Bean 对象
| 作用域 | 说明 | 使用场景 |
|---|---|---|
| singleton | 默认,整个应用只有一个实例 | 无状态的服务、配置类 |
| prototype | 每次请求都创建新实例 | 有状态的对象 |
| request | 每个 HTTP 请求一个实例 | Web 应用 |
| session | 每个 HTTP 会话一个实例 | 用户会话数据 |
实时监控方法执行时间和调用次数
| 方式 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 构造器注入 | 明确依赖、不可变、易测试 | 参数多时代码长 | ⭐⭐⭐⭐⭐ |
| Setter 注入 | 可选依赖、灵活 | 可能为 null | ⭐⭐⭐ |
| 字段注入 | 代码简洁 | 隐藏依赖、难测试 | ⭐ |