Dependency Injection 이란❓

이상민·2021년 8월 11일
0
post-thumbnail

1. Dependency Injection

= 의존성 주입

  • Dependency : 클래스가 작동하기 위해 필요한 다른 객체

  • Dependency Injection : 의존성이 클래스로 주입하는 것. 클래스 내에서 의존성 객체를 생성하는 것과 대조된다

// DI하는 경우
Class Example1 {
    private Database db;
    
    public Example1(Database db) {
        this.db = db;    
    }

}

Class Injector {
    Database db = new MySQL();
    Example1 ex1 = new Example1(db);
}
// DI하지 않는 경우
Class Example2 {
    private Database db = new MySQL();
}

Class Host {
    Example2 ex2 = new Example2();
}
  • Example1 처럼 객체를 받는 객체를 클라이언트, db처럼 클라이언트에 전달되는 객체를 서비스, 클라이언트에 객체를 전달하는 코드를 인젝트 한다

2. DI을 하는 이유

Dependency Inversion Principle

  • 높은 수준의 객체들은 낮은 수준의 객체에 의존하면 안된다. 낮은 수준의 객체에 의존하면 객체 수정 시 높은 수준의 객체 코드까지도 수정해야하기 때문

  • 따라서 코드는 추상체에 의존해야한다. 추상체에 의존하게 하므로서 구현을 분리 시킬 수 있다

  • 위 예시의 경우 인젝터에서 MySQL 객체를 PostgreSQL 객체로 바꾼다고 해도, Example1의 코드 수정 없이 작동할 수 있다. 클라이언트가 어떤 서비스를 사용하지 고르지 않고 인젝터가 어떤 서비스를 사용할지 정하기 때문

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글