의존성 주입 컨테이너(Dependency Injection Container)

특징

// 의존성 주입 없이
class UserService {
    private UserRepository repository = new MySQLUserRepository();
    
    public User getUser(int id) {
        return repository.findById(id);
    }
}

// 의존성 주입 사용
class UserService {
    private UserRepository repository;
    
    // 생성자를 통한 의존성 주입
    public UserService(UserRepository repository) {
        this.repository = repository;
    }
    
    public User getUser(int id) {
        return repository.findById(id);
    }
}

// 사용 예
UserService service = new UserService(new MySQLUserRepository());
// 또는
UserService testService = new UserService(new MockUserRepository());