Spring 依赖注入的方式有哪些?
Spring 框架支持三种主要的依赖注入方式:
- 构造器注入:这是最常用的依赖注入方式。在这种方式中,我们会在类的构造器中声明依赖,然后 Spring 在创建这个 bean 时,会通过构造器参数将依赖注入进来。这种方式的优点是,可以确保 bean 的不变性和必要性,因为一旦 bean 被创建,它的依赖就不能被改变,而且必须提供所有的依赖。
@Service public class UserService { private UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } // ... }
- Setter 注入:在这种方式中,我们会为每个依赖提供一个 setter 方法,然后 Spring 在创建 bean 时,通过调用这些 setter 方法来注入依赖。这种方式的优点是,可以在 bean 创建后改变它的依赖,但也可能导致 bean 的状态不一致。
@Service public class UserService { private UserRepository userRepository; @Autowired public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } // ... }
- 字段注入:在这种方式中,我们直接在字段上使用 @Autowired 注解,然后 Spring 会在创建 bean 时,自动注入这个字段的依赖。这种方式的优点是,代码更简洁,但缺点是,我们不能在构造器中检查依赖的存在,而且很难进行单元测试。
@Service public class UserService { @Autowired private UserRepository userRepository; // ... }
以上就是 Spring 支持的三种依赖注入方式。在实际开发中,我们通常推荐使用构造器注入,因为它可以确保 bean 的不变性和必要性,而且更容易进行单元测试。