Service
: 서비스는 비즈니스 처리를 하는 롤 (네이밍도 이에 맞게 해야 함)
MemberService 클래스 생성
1. 회원 가입
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
/**
* 회원 가입
*/
public Long join(Member member){
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.save(member);
return member.getId();
}
}
null 이 반환될 수 있으니 optional로 감싸준다.
BUT !! optional을 쓰는 건 비추 ! !
→ 아래와 같이 변경해준다.
public Long join(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.save(member);
return member.getId();
}
검증 하는 부분 따로 Method로 추출하기
단축키 : control + T 입력 후 "메서드 추출" 선택
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
를 감싼 후 단축키 입력 하여 설정 완료 후 리팩토링 진행
public Long join(Member member) {
validateDuplicateMember(member); // 중복 회원 검증
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
2. 전체 회원 조회
public List<Member> findMembers(){
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId){
return memberRepository.findById(memberId);
}
@참고자료
[인프런] 김영한 - 스프링 입문 강의 (무료)
'개발 > Spring' 카테고리의 다른 글
[Spring] 스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2024.11.07 |
---|---|
[Spring] 스프링 입문 - 회원 서비스 테스트 (0) | 2024.11.07 |
[Spring] 스프링 입문 - (회원 관리 예제) 회원 리포지토리 테스트 케이스 (0) | 2024.11.07 |
[Spring] 스프링 입문 - (회원 관리 예제) 회원 도메인과 리포지토리 (0) | 2024.11.05 |
[Spring] 스프링 입문 - MVC, API (0) | 2024.11.05 |