DevKim
[01] 회원 관리 예제 - 회원 service 개발 & Test Code 작성 본문
[ 비즈니스 로직 ]
: 같은 회원이 있으면 안된다! 라고 가정
[ 회원 service 부분 ]
< 회원 가입 - 수정 전>
이때, 중복 회원 검토하는 ispresent ~~ 하면서 쭉 logic이 나오는 경우엔 메서드로 뽑아주는게 좋다고한다
단축키 : ctrl+alt+shift+T 누르면 리팩토링 관련된 여러가지가 나오는데, 여기에서 extract method 클릭
< 회원 가입 - 수정 후>
1. logic이 들어간 부분을 별도의 메서드로 뽑아주었다.
2. 기존에는 회원 service가 memorymemberrepository를 직접 생성하게 했다면,
수정 후엔,
memberRepository의 코드가 회원 service 코드를 DI 가능하게 변경했다.
=> MemberService의 입장에서, 내가 직접 new 하지않고
memberRepository를 외부에서 넣어주었다
= Dependency injection ( DI )
Lombok의 @RequiredArgsConstructor를 대신 넣어주어도 될 것 같다.
*isPresent = NULL이 아닌 값이 있다면
<전체 회원, id로 회원 한명만 조회>
*** 실무자의 Tip ***
repository는 단순히 저장소에 넣었다가 뺐다하는 느낌이 듦
Service는 join,findMembers 와 같이 비즈니스에 가깝게 네이밍을 해주는 것이 좋다!!
그래야 기획자와 개발자 사이의 매핑이 된다.
*repository의 roll : 단순히 기계적으로 data를 넣었다 빼는
* service의 roll : 비즈니스를 처리하는 것
즉, 각자의 roll에 맞게 네이밍을 하는 것이 좋다!
[ 회원 Service 테스트 ]
@BeforeEach
: 각 테스트 실행 전에 호출된다.
테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고,
의존관계도 새로 맺어줌
<회원 가입 테스트>
테스트 할 때는 한글로도 많이 적는다고한다.
<중복 회원 테스트>
try,catch 문으로 돌리는 방법도 있지만,
위의 방법을 더 선호하신다고한다.
+) Try,Catch 문으로 예외처리 확인하는 법
*자료 출처*
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한)
'Spring Boot' 카테고리의 다른 글
[01] 회원 관리 예제 - 회원 웹 기능 (홈 화면 추가,등록,조회 화면 추가) (0) | 2021.05.06 |
---|---|
[01] 스프링 Bean과 의존관계 - 컴포넌트 스캔과 자동 의존관계 VS. 직접 스프링 빈 등록 (0) | 2021.05.06 |
[01] 회원 관리 예제 - 비즈니스 요구 사항 정리 & domain과 repository 생성 &Test code 작성 (0) | 2021.05.06 |
[01] 정적 컨텐츠, MVC와 템플릿 엔진, API (0) | 2021.05.06 |
[01] thymeleaf 템플릿 엔진 동작 원리 (0) | 2021.05.06 |