Spring 依赖注入的方式有哪些?

Spring 框架支持三种主要的依赖注入方式:

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

以上就是 Spring 支持的三种依赖注入方式。在实际开发中,我们通常推荐使用构造器注入,因为它可以确保 bean 的不变性和必要性,而且更容易进行单元测试。

发表评论

后才能评论