[디자인 패턴] 의존성주입 예시
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 애너테ㅔ이션과 이벤트로 구현.
최근 댓글