코딩딩/Spring
회원 서비스 개발
전낙타
2023. 7. 6. 16:17
회원 리포지토리와 도메인을 활용해 실제 비지니스 로직을 작성해볼것이다.
우선 자바의 hello.hellospring에 하위 패키지를 생성한다.

해당 서비스 패키지에 MemberService 클래스를 생성해준다.
제일 먼저 작성할 코드는 인터페이스 MemberRepository의 인자를 가지고 있고 작동 가능한 MemoryMemberRepository의 메소드를 포함한 객체를 하나 생성해준다.

그 다음 해당 객체를 바탕으로 회원가입 서비스 코드를 작생해보자.

여기서 validateDupicateMember는 member의 값이 이미 데이터 베이스에 저장되어 있는지 확인하는 메서드이다.

다음으로는 전체 멤버를 조회하고 리스트 형식으로 반환하는 서비스 코드를 작성해보자.

해당 코드는 기존 MemoryMemberRepository에 구현되어있는 findAll 메서드를 사용하면 간단하다.
마지막으로 맴버 조회를 하는 서비스 코드를 작성해보자

이 또한 마찬가지로 findById 메서드를 사용하면 간단하다.
전체 코드
package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import java.util.List;
import java.util.Optional;
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
// 회원가입
public Long join(Member member){
// 같은 이름이 있는 중복 회원 X
// 옵셔널로 한번 감싸줘서 ifPresent 메서드를 사용 가능함
validateDuplicateMember(member); // 중복회원 검증
memberRepository.save(member);
return member.getId();
}
public List<Member> findMembers() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId){
return memberRepository.findById(memberId);
}
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
}
GPT선생의 코드설명
주어진 코드는 Spring 애플리케이션에서의
MemberService
클래스의 간단한 구현입니다. 다음은 코드의 기능에 대한 설명입니다:MemberService
클래스는 회원 등록 및 조회와 같은 회원 관련 작업을 처리하는 역할을 합니다.
- 이 클래스는
MemberRepository
인터페이스에 의존하며, 이 인터페이스를 사용하여 백엔드 데이터 저장소와 상호작용합니다(여기서는MemoryMemberRepository
구현체를 사용합니다).
join
메서드는 새로운 회원을 등록하는 데 사용됩니다. 먼저 중복 회원인지를 검증하기 위해validateDuplicateMember
메서드를 호출합니다. 중복 회원이 아닌 경우에만 회원을 저장하고, 회원의 식별자(ID)를 반환합니다.
findMembers
메서드는 모든 회원을 조회하여 리스트로 반환합니다.
findOne
메서드는 주어진 회원 식별자(ID)에 해당하는 회원을 조회합니다. 조회된 회원은Optional
로 감싸서 반환됩니다. 이는 조회 결과가 없을 수도 있기 때문에null
이 아닌Optional
을 사용하여 처리하는 것이 좋습니다.
validateDuplicateMember
메서드는 중복 회원을 검증하는 메서드입니다.memberRepository.findByName(member.getName())
을 통해 동일한 이름을 가진 회원을 조회하고, 조회된 회원이 존재하는 경우IllegalStateException
예외를 던집니다.
이렇게 주어진 코드는 회원 관리와 관련된 기본적인 기능을 구현한
MemberService
클래스입니다.