더북(TheBook)

2.2.5 의존성 주입 프레임워크 활용

앞서 자바스크립트 콘퍼런스 참가자의 좌석 예약 모듈을 개발하면서 Attendee의 의존성을 자신의 생성자에 하드 코딩하여 주입했던 부분을 기억할 것이다.

var attendee = new Attendee(new ConferenceWebSvc(), new Messenger(), id);

 

이제 적합한 DI 컨테이너를 마련했으니 객체를 생성할 때마다 의존성을 하드 코딩해서 넣지 않아도 된다. 대규모 자바스크립트 애플리케이션의 출발점은 보통 설정 루틴인데, 의존성 주입 설정을 하기 적절한 지점이기도 하다.

전역 객체 MyApp 내부에서 작동하는 애플리케이션은 예제 2-21 같은 설정 코드를 생각할 수 있다.

예제 2-21 DiContainer를 Attendee에 적용

MyApp = {};
 
MyApp.diContainer = new DiContainer();
 
MyApp.diContainer.register(
‘Service’, // 웹 서비스를 가리키는 DI 태그
[],        // 의존성 없음
           // 인스턴스를 반환하는 함수
function() {
  return new ConferenceWebSvc();
}
);
 
MyApp.diContainer.register(
‘Messenger’,
[],
function() {
  return new Messenger();
}
);
 
MyApp.diContainer.register(
‘AttendeeFactory’,
[‘Service’,‘Messenger’], // Attendee는 service 및 messenger에 의존한다.
function(service, messenger) {
  return function(attendeeId) {
    return new Attendee(service, messenger, attendeeId);
  }
}
);

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.