배경

Untitled

MemberRepository의 인터페이스가 있고 이것의 구현체 MemoryMemberRepository가 있다.

그리고 MemberRepository를 사용하는 MemberService가 있다.

MemberService와 MemberRepository를 연결해보자

MemberService

public class MemberService {
    private final MemberRepository memberRepository = new MemoryMemberRepository();
}

위와 같이 Injection을 하면 문제는? 외부에서 주입하는 방식으로 할수가 없다.

문제점1

외부에서 주입하지않고 사용할시 문제점은 무엇일까

MemberService를 테스트를 하기위해 Test클래스를 만들어 테스트해본다 가정하자

외부 : MemberServiceTest

class MemberServiceTest{
	MemberService memberService = new MemberService();
	MemoryMemberRepository memoryRepository = new MemoryMemberRepository();

	@AfterEach
  public void afterEach(){
      memberRepository.clearStore(); //이부분때문에 memoryRepository가 필요
  }

	... 
	void 회원가입() {
	...
	...
  }
}