728x90
반응형
회원 서비스 개발
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
/**
* 회원 가입
*/
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();
}
}
Optional<Member> result 부분을 합쳐서 아래와 같이 간결하게 만듬
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
위 코드를 드래그 하여 선택하고
ctrl + alt + shift + T > Extract Method... 선택 후 메소드 이름 validateDuplicateMember로 설정
그러면 아래와 같은 코드로 수정된다.
public Long join(Member member) {
validateDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
// 같은 이름이 있는 중복 회원X
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
전체 회원 조회와 findOne() 을 추가 하면 아래와 같은 코드가 나오게 된다.
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
/**
* 회원 가입
*/
public Long join(Member member) {
// 같은 이름이 있는 중복 회원X
validateDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
// 같은 이름이 있는 중복 회원X
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
/**
* 전체 회원 조회
*/
public List<Member> findMember() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}
참고
service 코드는 비즈니스에서 가져온 용어 사용, 비즈니스에 의존적으로 설계
인프런 강의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 정리한 것 입니다.
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
728x90
반응형
'스프링 Spring > 스프링 입문' 카테고리의 다른 글
[스프링 빈과 의존관계] 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2022.01.15 |
---|---|
[회원 관리 예제 - 백엔드 개발] 회원 서비스 테스트 (0) | 2022.01.14 |
[회원 관리 예제 - 백엔드 개발] 회원 리포지토리 테스트 케이스 작성 (0) | 2022.01.12 |
[회원 관리 예제 - 백엔드 개발] 회원 도메인과 리포지토리 만들기 (0) | 2022.01.11 |
[회원 관리 예제 - 백엔드 개발] 비즈니스 요구사항 정리 (0) | 2022.01.11 |
댓글