본문 바로가기
Spring 입문

스프링MVC 입문11

by danny-j 2022. 11. 10.

service/MemverService

package com.danny.learningspring.service;

import com.danny.learningspring.domain.Member;
import com.danny.learningspring.repository.MemberRepository;
import com.danny.learningspring.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();
    }

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

    /**
     * 한명 회원 조회
     */
    public Optional<Member> findOne(Long memberId) {
        return memberRepository.findById(memberId);
    }

    /**
     * 중복 이름 조회
     */
    private void validateDuplicateMember(Member member) {
        memberRepository.findName(member.getName())
                .ifPresent(m -> {
                    throw new IllegalStateException("이미 존재하는 회원입니다.");
                });
    }
    
}
  • option+command+enter -- 리턴값을 변수에 타입이랑 자동으로 생성
  • ifPresent(m -> {?}) -- null이 아닌 값이 있다면 실행, get으로 꺼낼 수 있지만 권장하지 않음
  • command+t -- Refactor툴 -> Extract Method(option+command+m) ->메서드로 밖으로 빼줌
  • /**+command+enter -- 블럭 주석
  • Optinal을 바로 반환하는 걸 권장하지 않음
  • Service클래스는 join, findMembers와 같이 business에 가까운 용어를 써서 기획과 소통
  • repository는 개발에 가까운 용어를 사용

'Spring 입문' 카테고리의 다른 글

스프링MVC 입문13  (0) 2022.11.11
스프링MVC 입문12  (0) 2022.11.11
스프링MVC 입문10  (0) 2022.11.10
스프링MVC 입문09  (0) 2022.11.10
스프링MVC 입문08  (0) 2022.11.09

댓글