더북(TheBook)

2.9 컨텍스트와 의존체 주입

 

의존체 주입은 컴포넌트와 그 의존체를 떼어놓는 디자인 패턴(5장 의존체 주입과 CDI 참고)으로 객체가 new 키워드를 써서 의존체를 만들게 하지 말고 객체 안에 의존체를 밀어 넣자는 사상입니다. 의존체를 컨테이너가 대신 생성하므로 컴파일 타임 또는 런타임에 의존체를 다른 호환 객체로 바꿀 수도 있습니다.

이처럼 컨테이너가 관리하는 빈을 CDI-관리 빈(CDI-managed)이라고 하며 컨테이너 시동 시 빈 인스턴스가 만들어집니다. 기본 생성자를 갖고 있지만 new 키워드로 생성하지 않은 모든 POJO는 그 타입에 따라 다른 객체에 주입할 수 있는 CDI 빈입니다. 객체를 받을 객체는 반드시 필드나 생성자 또는 @Inject를 붙인 메서드를 선언해야 하며 여기에 표시한 객체 타입을 보고 알맞은 의존체를 골라 주입합니다.

코드 2 -2는 기본 생성자가 있고 CDI 빈으로 관리할 POJO입니다. 코드 2 -3은 관리 빈을 주입하는 코드입니다. 컨테이너는 타입을 보고 Message 빈을 주입해야 한다는 사실을 압니다. 이 컨테이너가 관리하는 CDI 빈 중 타입이 Message인 것은 하나밖에 없으므로 해당 빈을 찾아 넣습니다.

코드 2-2 의존체 주입 - 의존체

package com.devchronicles.basicsofjavaee;
 
public class Message {
 
    public String getMessage() {
        return “안녕하세요, 여러분!!”
    }
 
}

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