728x90
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
1. service 만들기
- 회원 서비스를 만들려면 회원 Repository가 필요하다.
2. 회원가입 메서드 만들기
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
/* 회원가입 */
public Ling join(Member member){
// 중복 회원이 있는지 확인
memberRepository.findbyName(member.getName());
memberRepository.save(member);
return member.getid();
}
memberRepository.findbyName(member.getName());
에서 Ctrl + alt + V 하면 자동으로
Optional member1 = memberRepository.findbyName(member.getName());
로 바뀐다.
- 중복 회원 확인
// 중복 회원이 있는지 확인
Optional<Member> member1 = memberRepository.findbyName(member.getName());
result.ifPressent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.")
})
- 이전에는 if(null)과 같은 형태를 사용 했었으나, 지금은 null을 이미 한번 감싸서 나오기 때문에 ifPressent과 같은 형태를 사용 할 수 있다.
그냥 꺼내고 싶다면 Member member1 = result.get();
와 같은 형태로 꺼낼 수도 있다. 하지만 직접 바로 꺼내는 것을 권장하지 않으며 사용 하는 경우 result.orElseGet()
을 사용 (값이 있으면 꺼내고 없으면 메서드 실행)
Optional을 바로 반환할 때 이미 result 가 반환 되었기 때문에 아래와 같이 바로 ifPresent가 들어갈 수 있다.
// 중복 회원이 있는지 확인
memberRepository.findbyName(member.getName()).ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
- 소스 리팩토링(Refactoring) 하는 법
findbyName과 같이 로직이 바로 나오는 경우 메서드로 뽑는 것이 좋다.
Window 단축키 : Ctrl+Alt+Shift+T
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("이미 존재하는 회원입니다.");
});
}
3. 전체회원 출력 메서드
public List<Member> findMembers(){
return memberRepository.findAll();
}
4. 아이디 찾기
public Optional<Member> findOne(Long memberId){
return memberRepository.findById(memberId);
}
728x90
'Java > [인프런] Spring 강의' 카테고리의 다른 글
[SpringBoot] #12 - 회원 서비스 테스트 (0) | 2023.08.16 |
---|---|
[SpringBoot] intellij Spring Boot 단축키 (수정중) (0) | 2023.08.16 |
[SpringBoot] #10 - 회원 리포지토리 테스트케이스 작성 (0) | 2023.08.10 |
[SpringBoot] #09 - 회원 도메인과 리포지토리 만들기 (0) | 2023.08.10 |
[SpringBoot] #08 - 비즈니스 요구사항 정리 (0) | 2023.08.10 |