1. 서비스 : 실제 비즈니스 로직이 들어감
( 리포지토리 메서드들은 네이밍이 findByName처럼 입출력을 중심으로 짓는다. but Service는 비즈니스 로직이므로 좀더 비즈니스적인 용어 써야함 . -> 오류때 찾기편함. 서비스는 비즈니스 의존적으로 짓는다. )
- 회원가입

result는 Optional이르모 ifPresent같은 메서드를 사용할 수 있다. ( result가 널이 아니면 뒤에 실행 )
이름이 이미 있으면 IllegalStateException 예외 던진다.

이 때 memberRepository의 선언이다. 업캐스팅된 모습이다..
다시 join메서드로 돌아와서, save 후 member의 id를 반환하는 것으로 설계하였다.
하지만 더 나은 코드는

이렇게 수정이 가능하다. result라는 변수로 받지 않고 어차피 findByName이 리턴타입이 Optional이므로 바로 뒤에 .ifPresent 메서드를 붙힌다. -> 훨씬 간결한 코드
( 중복이 있으면 예외를 던진다. -> 예외가안터졌다=중복이 없다. -> 그 member 정상적으로 save() 한다. )
여기서 더 간결한 코드는

위의 로직을 메서드로 뽑는게 좋다. (리팩터링) -> 범위 긁고 Ctrl+Alt+M ( Extract Method )
이후 이름을 validateDuplicateMember로 바꿔 주었다.
이렇게 하면 장점이

아 join 메서드를 실행하면 검증하고 -> 통과하면 -> 저장하는구나!!
# MemberService 전체코드
나머지 서비스 두개도 만들어주자.

출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.
꾸준히 다시보자.
1. 220712
2. 220731
'Java, Spring > 스프링 입문' 카테고리의 다른 글
컴포넌트 스캔과 자동 의존관계 설정, 자바코드로 직접 스프링 빈 등록하기 (0) | 2022.07.10 |
---|---|
회원 서비스 테스트 (0) | 2022.07.10 |
회원 리포지토리 테스트 케이스 작성 (0) | 2022.07.04 |
회원 도메인과 리포지토리 만들기 (0) | 2022.07.04 |
API (0) | 2022.07.04 |