Language/Java

DI(Dependent Injection) 이란?

kimjingyu 2022. 12. 11. 13:53
728x90
  • DI(의존관계 주입) : 객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것이다.

  • 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스만 의존하고 있어야 한다.
  • 런타임 시점의 의존관계에는 컨테이너나 팩토리 같은 제 3의 존재가 결정한다.
  • 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 주입해줌으로써 만들어진다

<이일민, 토비의 스프링 3.1, 에이콘(2012), p114)>


DI 구현방법

  • 기존 코드
class BurgerChef{
	private BurgerRecipe burgerRecipe;
    
    public BurgerChef(){
    	burgerReceipe = new HamBurgerReceipe();
    }
 }
  • 생성자를 이용
class BurgerChef{
	private BurgerRecipe burgerRecipe;
    
    public BurgerChef(BurgerRecipe burgerRecipe){
    	this.burgerRecipe = burgerRecipe;
    }
}

class BurgerRestaurantOwner{
	private BurgerChef burgerchef = new BurgerChef(new HamburgerRecipe));
    
    public void changeMenu(){
    	burgerChef = new BurgerChef(new CheeseBurgerRecipe());
    }
}
  • 메소드를 이용 (대표적으로 Setter 메소드)
class BurgerChef {
    private BurgerRecipe burgerRecipe = new HamburgerRecipe();

    public void setBurgerRecipe(BurgerRecipe burgerRecipe) {
        this.burgerRecipe = burgerRecipe;
    }
}

class BurgerRestaurantOwner {
    private BurgerChef burgerChef = new BurgerChef();

    public void changeMenu() {
        burgerChef.setBurgerRecipe(new CheeseBurgerRecipe());
    }
}

참조 : https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/

 

의존관계 주입(Dependency Injection) 쉽게 이해하기

이번 글에서는 DI(의존성 주입, 의존관계 주입)의 개념을 설명한다.

tecoble.techcourse.co.kr

 

728x90