What are the different types of Dependency Injection in Spring?

Beginner

Answer

Spring supports three types of DI:

  1. Constructor Injection: Dependencies injected through constructor
  2. Setter Injection: Dependencies injected through setter methods
  3. Field Injection: Dependencies injected directly into fields using @Autowired
// Constructor Injection (Recommended)
@Service
public class UserService {
    private final UserRepository userRepository;
    
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

// Setter Injection
@Service
public class UserService {
    private UserRepository userRepository;
    
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

// Field Injection
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
}