springboot三种注入方式
在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; // ... }
推荐使用构造函数注入,因为它能够更好地表达类的依赖关系,并且更容易进行单元测试