스프링 핵심 원리 기본 - 회원 도메인 개발
생성자 생성
getter , setter 생성 (private filed값을 세팅하기 위함)
회원저장
회원 아이디로 회원 찾는 기능
인터페이스와 구현체를 다른 패키지에 두면 설계 상 좋음
DB확정 안된 상태에서 MemoryMemberRepository만 만들어놓은 상태
개발 진행은 할 수 있음
HaspMap<> 동시성 이슈가 발생할 수 있으므로 실무에서는 ConcorrentHashMap사용 권장
구현체가 하나만 있는 경우 인터페이스 명뒤에 impl 관례상 많이 씀
가입을 하고 회원을 찾으려면 memberRepository 인터페이스 필요
구현 객체를 선택해 주어야함
join에서 save호출하면 다형성에 의해 MemoryMemberRepository에 있는 save호출 됨
순수한 자바 코드로 자바 메서드 실행. 애플리케이션 로직으로 테스트 하는 것은 한계가 있음
Junit으로 테스트
빌드해서 나갈 때 main에 대한 코드만 나가고, test에 대한 코드는 운영환경에 배포가 안 됨.
memberService가 인터페이스, 구현까지 의존
MemberRepository는 MemberServiceImpl인터페이스 의존
MemoryMemberRepository실제 할당하는 부분이 구현체를 의존하는 것이 문제
MemberServiceImpl은 memberRespository도 의존하고 MemberMemberRepository도 의존한다
추상화에도 의존하고 구체화에도 의존 (DIP위반). 변경이 생기는 경우 문제 생김