MemberRepository의 인터페이스가 있고 이것의 구현체 MemoryMemberRepository가 있다.
그리고 MemberRepository를 사용하는 MemberService가 있다.
MemberService와 MemberRepository를 연결해보자
MemberService
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
}
위와 같이 Injection을 하면 문제는? 외부에서 주입하는 방식으로 할수가 없다.
외부에서 주입하지않고 사용할시 문제점은 무엇일까
MemberService를 테스트를 하기위해 Test클래스를 만들어 테스트해본다 가정하자
외부 : MemberServiceTest
class MemberServiceTest{
MemberService memberService = new MemberService();
MemoryMemberRepository memoryRepository = new MemoryMemberRepository();
@AfterEach
public void afterEach(){
memberRepository.clearStore(); //이부분때문에 memoryRepository가 필요
}
...
void 회원가입() {
...
...
}
}
MemberService
에서 주입된 MemberRepository
와 MemberServiceTest
에서 사용하는 MemberRepository
가 다른 인스턴스가 2개라는 문제가 생긴다