Spring Boot 中的依赖注入:Spring 如何为你自动装配所有内容
Source: Dev.to

什么是依赖注入?
依赖注入(DI) 是 Spring Boot 中使用的一种设计模式,用来实现组件之间的 松耦合。
通俗来说:类 不自己创建依赖,而是由外部提供这些依赖——在 Spring Boot 中,这一职责由 Spring IoC 容器 负责。这样可以让应用 更简洁、更灵活、更易于维护。
用一个简单例子理解 DI
设想:
- Alice 需要 Frosting(糖霜)和 Syrup(糖浆)来烤蛋糕。
- Alice 不自己创建 Frosting 或 Syrup。
相反,Frosting 和 Syrup 是 从外部注入 到 Alice 中的。这正是 依赖注入 在 Spring 中的工作方式。
Spring Boot 中的依赖注入
- 对象被称为 Bean。
- Bean 由 IoC 容器 管理。
- 依赖在运行时 自动注入。
这样,一个类只需要关注自己的 业务逻辑,而不必关心依赖的创建。
依赖注入的好处
松耦合
组件不依赖具体实现,使得应用更易于维护和扩展。
灵活的配置
依赖可以在外部配置,轻松替换而无需修改代码。
提升可测试性
在测试时可以对依赖进行 mock 或替换,从而实现可靠且独立的单元测试。
在 Spring Boot 中注入依赖的方式
1. 构造函数注入
通过类的构造函数提供依赖。
为什么推荐这种方式:
- 确保所需依赖一定可用。
- 鼓励不可变性。
- 便于测试。
这是在实际 Spring Boot 项目中 推荐的做法。
2. 字段注入
使用 @Autowired 直接将依赖注入到类的字段中。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Autowired
private MyRepository repository;
// ...
}
虽然写法简洁,但字段注入会:
- 隐藏依赖。
- 增加测试难度。
- 不推荐 在生产环境中使用。
为什么依赖注入在真实项目中很重要
没有 DI:
- 代码耦合紧密。
- 变更会影响多个类。
- 测试困难。
有了 DI:
- 应用模块化。
- 代码干净且易于维护。
- 系统更易扩展。
依赖注入是构建清晰 Spring Boot 架构的基石。
结语
掌握 依赖注入 是学习 Spring Boot 的关键里程碑。弄清 DI 后,Bean、IoC 容器 以及 Spring 注解等概念就会变得通俗易懂。