在Spring Boot中,您可以使用三种主要的方式来进行依赖注入:
构造函数注入(Constructor Injection):您可以在类的构造函数中声明依赖项,然后Spring容器会在创建Bean实例时自动注入这些依赖项。这种方式通常用于强制依赖项注入,因为它确保了依赖项在对象创建时就已经可用。
- @Service
- public class MyService {
- private final MyRepository repository;
-
- @Autowired
- public MyService(MyRepository repository) {
- this.repository = repository;
- }
- // ...
- }
Setter方法注入(Setter Injection): 您可以在类中创建Setter方法来设置依赖项。Spring容器将通过这些Setter方法注入依赖项。这种方式使得依赖项变得可选,因为您可以选择不调用Setter方法,从而使用默认值或空值。
- @Service
- public class MyService {
- private MyRepository repository;
-
- @Autowired
- public void setRepository(MyRepository repository) {
- this.repository = repository;
- }
- // ...
- }
字段注入(Field Injection): 这种方式将依赖项直接注入到类的字段中,通常使用@Autowired
注解来实现。虽然它简洁,但它不够推荐,因为它使得类的依赖关系不够明确,难以进行单元测试。
- @Service
- public class MyService {
- @Autowired
- private MyRepository repository;
- // ...
- }
推荐使用构造函数注入,因为它能够更好地表达类的依赖关系,并且更容易进行单元测试