[spring] 회원관리프로그램 - 회원 서비스 작성 (스프링 입문 by 김영한)

su_y2on·2022년 1월 11일
0

Spring

목록 보기
4/30
post-thumbnail

회원관리프로그램 - 회원 서비스 작성

회원 리포지토리와 다르게 회원 서비스는 조금더 비즈니스적인 기능(회원가입, 특정회원 조회, 전체회원조회)들을 작성합니다.

public class MemberService { 

    private final MemberRepository memberRepository;

    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()) // optional 자료형
                .ifPresent(m -> {
                    throw new IllegalStateException("이미 존재하는 이름입니다");
                 });
    }

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

    // 특정회원조회
    public Optional<Member> findOne(Long memberId){
        return member**텍스트**Repository.findById(memberId);
    }

}

회원가입시 같은 이름의 회원은 가입할 수 없으며 이를 따로 validateDuplicateMember로 정의해 사용합니다.



final

아래 코드에서 final이라는 keyword를 처음 봐서 정리해보려고 합니다.

private final MemberRepository memberRepository;

찾아보니 final은 두번 값을 할당할 수 없게 한다는 의미로 쓰이는데요. 따라서 지금같이 클래스를 객체로 받을 때 쓰이면 한번만 받을 수 있다는 의미여서 재할당을 나중에 시도하더라도 그 오류를 잡아줍니다

만약 class에 final을 붙이면 상속을 제한한다고 합니다. 또 class안에 method에 final을 붙이면 상속을 받아도 해당 method는 오버라이드가 금지됩니다.

0개의 댓글