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);
}
}
코드 출처 : 김영한님의 스프링 입문
'Back End > Spring' 카테고리의 다른 글
Spring - 스프링 빈과 의존관계1 (0) | 2023.07.04 |
---|---|
Spring - 회원관리예제 (회원 서비스 테스트) (0) | 2023.07.04 |
Spring - 회원관리예제 (테스트케이스 작성) (0) | 2023.07.04 |
Spring - 회원관리예제 (회원 도메인과 레포지토리) (0) | 2023.07.04 |
Spring - 회원관리예제 (비즈니스 요구사항 정리) (0) | 2023.07.04 |