1. 명칭
Dependency Injection의 약자로 우리말로 '의존성 주입'이라고 한다.
2. 정의
Java에서는 레퍼런스 변수를 선언하여 인스턴스를 생성하고자 할 때, new 생성자를 통한 코드로 작성했었다.
public class Hyundai { ... } // 레퍼런스 클래스
public class ShowCar { // 호출 클래스
private Hyundai hyundaiCar = new Hyundai(); // 레퍼런스 변수 선언 및 인스턴스 생성
hyundaiCar.i30N() { ... } // 인스턴스 접근
...
}
다만, 이렇게 결합도가 높은 방식으로 구현되는 경우 레퍼런스 클래스의 변동사항이 있을 때 이를 호출하는데에 있어서 연쇄적으로 얽혀 일일이 수정을 해야하는 일이 생긴다.
즉, 이러한 생산성 문제를 해결한 것이 의존성 주입으로 내부가 아닌 외부에서 객체를 생성하는 방식으로 결합도를 줄여 불필요한 코드수정을 방지할 수 있다.
public class Hyundai { ... } // 레퍼런스 클래스
public class ShowCar { // 호출 클래스
private Hyundai hyundaiCar;
public ShowCar (Hyundai hyundaiCar) { // 생성자 메소드를 통해 의존성 주입을 한다
this.hyundaiCar = hyundaiCar;
}
hyundaiCar.i30N() { ... }
...
}
또한, Spring 프레임워크에서는 @Autowired 어노테이션으로 DI 기능이 지원된다.
public class Hyundai { ... } // 레퍼런스 클래스
public class ShowCar { // 호출 클래스
@Autowired // 해당 어노테이션을 통해 생성자 메소드 작성을 생략할 수 있다.
private Hyundai hyundaiCar;
hyundaiCar.i30N() { ... }
...
}
'ETC > 기술면접' 카테고리의 다른 글
[Oracle] SYNONYM (0) | 2021.06.13 |
---|---|
[Oracle] INDEX (0) | 2021.06.13 |
[Spring] IOC (0) | 2021.06.13 |
[Spring] AOP (0) | 2021.06.10 |
Intro... (0) | 2021.06.10 |
최근댓글