[디자인 패턴] 의존성주입 예시

public class UserServiceFactory {
    public UserService getInstance(){
        return new UserService(new UserDataRepositoryImpl());
    }
}

class UserService{
    private UserDataRepository udr;

    UserService(UserDataRepository udr){
        this.udr = udr;
    }

    public void persistUser(User user){
        udr.save(user);
    }
}

JAVA EE로 DI구현

public class UserServiceFactory {
    public UserService getInstance(){
        return new UserService(new UserDataRepositoryImpl());
    }
}

class UserService{
    @Inject
    private UserDataRepository udr;

    public void persistUser(User user){
        udr.save(user);
    }
}

 

의존체 주입(ID)
– 목 객체를 써서 단위 테스트를 구현하기 쉬움

@Resource : JMS, URL 등 데이터 소스를 주입
@EJB : EJB를 주입
@WebServiceRef : 웹서비스를 주입

@Named를 붙이면 EL에서 참조할 수 있음.

컨텍스트와 스코프
@RequestScoped : 사용자 HTTP 요청이 살아있는 동안 지속
@SessionScoped : 사용자 HTTP 세션이 살아있는 동안 지속

장식자패턴
@Decorator, @Delegate 애너테이션사용
beans.xml에 반드시 적야아함
서브클래싱할 수 없거나(하위 클래스 너무 많아져서) 사용

팩토리패턴
new키워드를 가급적 안쓰고 캡슐화 가능
생산자 메서드에 @Produces를 붙임

옵저버패턴 호출하는 코드와 호출받는 코드의 순서를 바꿈. 객체가 리소스의 변화를 감지할 수 있음
@Observes 애너테ㅔ이션과 이벤트로 구현.

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.