본문 바로가기
Server/Spring

회원관리 - 백엔드 개발) 3. 회원 서비스 개발하기

by print_soo 2024. 8. 24.
💡 서비스란, 비즈니스 로직을 처리하는 계층을 말한다. 즉, 사용자를 등록하거나 주문을 처리하는 비즈니스 로직 이 여기에 담긴다. 컨트롤러에서 요청을 받으면, 서비스가 일을 처리하고, 필요하면 데이터베이스와 연결해 데이터를 가져오거나 저장한다.

 

파일 경로: src/main/java/만든 파일명/service(만들어야함)/MemberService

 

package section4.section4_spring.service;

import section4.section4_spring.domain.Member;
import section4.section4_spring.repository.MemberRepository;
import section4.section4_spring.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
        Optional<Member> result = memberRepository.findByname(member.getName());
        result.ifPresent(m -> { //m은 result 값을 의미한다. 람다식 내부 코드는 result 값이 존재한다면 실행하게 될 코드이다.
            throw new IllegalStateException("이미 존재하는 회원입니다."); //예외를 발생시키고 메시지를 전달
        });

        memberRepository.save(member);
        return member.getId();
    }

    public List<Member> findMembers(){
       return memberRepository.findAll();
    }

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

}

 

 

여기서 다른 코드는 어려울 것이 없기에 회원가입 코드만 살펴보자.

 

result.ifPresent(m -> { //m은 result 값을 의미한다. 람다식 내부 코드는 result 값이 존재한다면 실행하게 될 코드이다.
    throw new IllegalStateException("이미 존재하는 회원입니다."); //예외를 발생시키고 메시지를 전달
});

 

 

  • ifPresent
    • result 내부에 값이 존재하는지 확인하는 것
  • m -> { ... }
    • m은 result 값 자체를 의미한다. 람다식 코드는 result 값이 존재하는 경우 실행된다.