Dependency Injection
의존 주입
A 클래스의 메서드를 실행시킬 때 B 클래스의 메서드를 참조해야 한다면?
-> A 클래스가 B 클래스에 의존하는 것!
의존하는 객체를 직접 생성해도 되지만 이렇게 하는 방식은 유지보수에 안좋다고 한다. 그래서 사용하는 것이 DI와 서비스 로케이터이며 여기서는 주로 DI에 대해 다룰 것이다.
DI -> 의존하는 객체를 직접 생성하지 않고 의존 객체를 전달받음
의존성 주입 실습용 프로젝트 sp5-chp03을 만들었다.
우선 클래스들을 생성하고 생성자와 getter setter, 최소한의 메서드들만 만들어 두었다.
기존 방식은 매번
private MemberDao memberDao = new MemberDao();
이런식으로 새로운 객체를 직접 생성했다면,
DI 방식으로는 위처럼 객체를 직접 생성하는 구문은 한 번만 선언하고 나머지 클래스에서는
MemberRegister memReg = new MemberRegister(memberDao);
ChangePassword ChangePwd = new ChangePassword(memberDao);
이처럼 이미 생성된 memDao 객체를 전달받아 사용한다.
코드를 다 작성했으면 객체를 생성하고 의존성을 주입해주기 위한 클래스가 하나 필요하다.
이런 역할을 하는 클래스를 assembler라고 부른다.
assembler의 getter를 통해 원하는 객체를 꺼내서 사용하면 된다.