[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 11강
https://inf.run/hisy 강의를 수강하고 작성하는 게시물입니다.
실제 비즈니스 서비스를 만드는 부분이다.
1. 회원가입 서비스
main - java - hello.hellospring 밑에 service 패키지를 만든다.
service 밑에 MemberService 라는 클래스를 만든다.
cmd + option + v 바로 return 받는 명령어이다.
회원가입 서비스를 먼저 만든다.
package Hello.hellospring.service;
import Hello.hellospring.domain.Member;
import Hello.hellospring.repository.MemberRepository;
import Hello.hellospring.repository.MemoryMemberRepository;
import java.util.Optional;
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("already exist.");
});
memberRepository.save(member);
return member.getId();
}
}
result.ifPresent 를 사용해도 되지만 result.orElseGet 도 많이 사용한다.(바로 get은 잘 안쓴다.)
result로 return 을 받는 방법도 있지만 코드가 길어지기 때문에 아래처럼 바로 ifPresent를 쓸 수도 있다.
package Hello.hellospring.service;
import Hello.hellospring.domain.Member;
import Hello.hellospring.repository.MemberRepository;
import Hello.hellospring.repository.MemoryMemberRepository;
import java.util.Optional;
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
/*
* 회원가입
*/
public Long join(Member member){
//같은 이름이 있는 중복회원 X
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("already exist.");
});
memberRepository.save(member);
return member.getId();
}
}
memberRepository.findByName() 부터 4줄을 블럭지정하고 ctrl + T 를 누르고 extract method 를 선택하면
메서드를 외부로 추출할 수 있다.
이름을 validateDuplicateMember 라고 지어주면 다음과 같이 된다.
package Hello.hellospring.service;
import Hello.hellospring.domain.Member;
import Hello.hellospring.repository.MemberRepository;
import Hello.hellospring.repository.MemoryMemberRepository;
import java.util.Optional;
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) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("already exist.");
});
}
}
2. 전체 맴버 조회 서비스
/**
* 전체 회원 서비스 조회
*/
private List<Member> findMembers() {
return memberRepository.findAll();
}
3. Id 조회
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
4. 총 코드
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
validateDuplicateMember(member); // 중복 회원 검증
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("already exist.");
});
}
/**
* 전체 회원 서비스 조회
*/
private List<Member> findMembers() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}
댓글 남기기