회원 서비스 개발
회원 리포지토리와 도메인을 활용해서 실제 비즈니스 로직을 작성하는 단계입니다.
서비스 클래스는 비즈니스에 가까운 이름으로 지어야 개발자와 기획자 모두 로직을 쉽게 파악할 수 있습니다.
회원가입 기능
1
2
3
4
5
6
7
8
9
10
11
/** 회원가입 **/
public Long join(Member member){
// 조건: 같은 이름을 가진 회원은 가입 X
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.save(member);
return member.getId();
}
Hello.Hellospring 패키지에 service라는 패키지를 하나 생성하고 그 안에 MemberService라는 클래스를 하나 생성합니다.
그 후 MemoryMemberRepository() 객체를 하나 생성합니다.
result가 Optional 이라서 여러 메소드를 사용할 수 있는데 그 중 ifPresent 값이 존재하면 확인을 합니다.
만약 중복이라면 IllegalStateException가 작동해서 예외처리를 해줍니다.
1
2
3
4
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.findByName은 이미 Optional로 선언되었기 때문에 간결하게 코드를 작성하고 싶으면 Optional을 지우고 바로 ifPresente를 사용합니다.
그 후 memberRepository.findByName의 코드 블록을
드래그 한 후 우클릭 > Refactor > Extract Method 를 눌러 vaildateDuplicateMember라고 메서드 이름을 바꿔줍니다.
이를 통해 join 메소드는 중복을 검증하고 바로 멤버를 저장합니다.
회원 조회 기능
1
2
3
4
/** 전체 회원 조회 **/
public List<Member> findMembers() {
return memberRepository.findAll();
}
MemberService클래스에 findMembers()를 선언하고 List를 java.uilt 클래스로 import합니다.
추가로 다음 메소드를 findMembers() 밑에 넣습니다.
1
2
3
public Optional<Member> findOne(Long memberId){
return memberRepository.findById(memberId);
}
전체 코드입니다.
Tip
- 변수를 클릭하고 Shift + F6 누르면 단락에 있는 이름이 같은 변수들을 한번에 바꿀 수 있습니다.
- Alt +Enter 를 누르면 바로 Local 가져올 수 있습니다.
이 글은 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 들으며 공부한 것을 직접 정리한 내용입니다.