본문 바로가기
Back End/Spring

Spring - 회원관리예제 (회원 서비스 개발)

by SolaKim 2023. 7. 4.
package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

//어노테이션 등록을 안하면 그저 순수 자바일뿐...
//@Service
public class MemberService {
    //private final을 선언한 변수를 사용하면 재할당하지 못하며, 해당 필드,
    //메서드 별로 호출할 때마다 새로이 값이 할당(인스턴스화)한다.
    private final MemberRepository memberRepository;

    //위에 memberRepository에서 커맨드+n 눌러서 constructor 만들기
    //외부에서 new memberRepository를 생성하게끔 하기
//    @Autowired //서비스와 레포지토리를 연결
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

    // 회원가입
    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("이미 존재하는 회원입니다.");
                });
    }

    //    전체 회원 조회
    public List<Member> findMembers() {
        return memberRepository.findAll();
    }

    public Optional<Member> findOne(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

코드 출처 : 김영한님의 스프링 입문