개발 공부/JAVA

스프링 핵심 원리 기본 - 회원 도메인 개발

공부하는개발자_ 2023. 12. 13. 15:26

 

 

 

 

 

 

생성자 생성

 

 

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위반). 변경이 생기는 경우 문제 생김