애플리케이션도 마찬가지. 실제 실행되는 객체들은 본인의 역할만 해야하고 어떤 구현체들이 할당될지는 기획자가 담당해야 한다.
애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스를 만들자.
애플리케이션 전반에 대한 구성을 책임질 예정.
생성자를 통해 MemberRepository에 뭔가 들어갈지를 선택해준다.
AppConfig
public MemberService memberService() {
return new MemberServiceImpl(new MemoryMemberRepository());
}
이러면 어디선가 AppConfig 를 통해 MemberService 를 불러다 사용할 것이다. 그러면 MemberService 구현체인 객체가 생성이 되는데 그때 MemoryMemberRepository가 이 단계에서 들어가게 된다.
MemberServiceImpl
private final MemberRepository memberRepository;
public MemberServiceImpl(MemberRepository memberRepository){
this.memberRepository = memberRepository;
}