Spring/스프링 핵심 원리 - 기본편

[김영한 스프링] 03. 회원 도메인

개발게발 2023. 4. 5. 21:36

회원 도메인 요구사항

  • 회원을 가입하고 조회할 수 있다.
  • 회원은 일반과 VIP 두 가지 등급이 있다.
  • 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)

 

 

 

 

Grade.java

package hello.core.member;

public enum Grade {
    BASIC,
    VIP
}

 

Member.java

main/java/hello.core/member/Member 생성

 

생성자 생성

 

package hello.core.member;

public class Member {
    private Long id;
    private String name;
    private Grade grade;
    
    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }
    
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public Grade getGrade() {
        return grade;
    }
    
    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

getter, setter 생성

 

MemberRepository.java

package hello.core.member;

public interface MemberRepository {
    
    void save(Member member);
    
    Member findById(Long memberId);
}

main/java/hello.core/member/MemberRepository 생성

 

회원 저장, 회원 id 찾는 기능 구현

 

MemoryMemberRepository.java

main/java/hello.core/member/MemoryMemberRepository 생성

 

메서드 구현

 

package hello.core.member;

import java.util.HashMap;
import java.util.Map;

public class MemoryMemberRepository implements MemberRepository {
    
    private static Map<Long, Member> store = new HashMap<>();
    
    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }
    
    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}

save와 findById 작성

 

MemberService.java

package hello.core.member;

public interface MemberService {
    
    void join(Member member);
    
    Member findMember(Long memberId);
}

main/java/hello.core/member/MemberService 생성

 

join, findMember 구현

 

MemberServiceImpl.java

main/java/hello.core/member/MemberServiceImpl 생성

 

메서드 구현

 

package hello.core.member;

public class MemberServiceImpl implements MemberService {
    
    private final MemberRepository memberRepository = new MemoryMemberRepository();
    
    @Override
    public void join(Member member) {
        memberRepository.save(member);
    }
    
    @Override
    public Member findMember(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

join, findMember 작성

 

MemberApp.java

main/java/hello.core/MemberApp 생성

 

package hello.core;

import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;

public class MemberApp {
   
    public static void main(String[] args) {
    
    MemberService memberService = new MemberServiceImpl();
    
    Member member = new Member(1L, "memberA", Grade.VIP);
    
    memberService.join(member);
    
    
    
    Member findMember = memberService.findMember(1L);
    
    System.out.println("new member = " + member.getName());
    
    System.out.println("findMember = " + findMember.getName());
    }
}

 

 

MemberServiceTest.java

test/java/hello.core/member/MemberServiceTest 생성

 

package hello.core.member;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class MemberServiceTest {
   
    MemberService memberService = new MemberServiceImpl();
    
    @Test
    void join() {
        //given
        Member member = new Member(2L, "memberA", Grade.VIP);
        
        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);
        
        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}

 

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com