Junior — Middle
Why is it necessary to use a constructor for dependency injection into an object?
sobes.tech AI
Answer from AI
Using a constructor for dependency injection allows explicitly passing all necessary dependencies to an object at the time of its creation. This provides several advantages:
- Explicit dependencies: it's immediately clear what the class depends on.
- Immutability: dependencies can be made final, increasing safety and predictability.
- Simplified testing: it's easy to substitute mocks or stubs when creating the object.
- No hidden dependencies: there's no need to look for dependencies inside methods.
Example:
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void createUser(String name) {
userRepository.save(new User(name));
}
}
Here, UserService does not create UserRepository itself but receives it from outside through the constructor, which simplifies dependency management and testing.