본문 바로가기

웹 개발/Spring

[Spring 기본] 회원 도메인 개발

회원 도메인 개발


1. member 패키지 생성.2. Grade 클래스 생성. Enum으로 생성한다. Grade.java

package hello.core.member;

public enum Grade {
    BASIC,
    VIP
}

 

3. Member 클래스 생성. 생성자와 getter, setter를 만든다. 

Member.java

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;
    }
}

 

4. MemberRepository 생성.

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);
    }
}

 

=> 실제로는 동시성 이슈가 발생할 수 있다. 

 

5. MemberService 인터페이스 생성

package hello.core.member;

public interface MemberService {

    void join(Member member);

    Member findMember(Long memberId);
}

 

6. service 구현체를 만든다.

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);
    }
}

 

 

테스트


위에서 개발한 기능을 테스트해보자. 

 

1. 먼저 순수한 자바코드를 이용해서 테스트 해 보자. 

 

hello.core 패키지에 MemberApp 클래스 생성

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());

    }
}

=> 그러나 메인메서드로 확인하는 방법에는 한계가 있다. 

이번엔 JUnit 프레임워크를 사용해서 테스트 해보자. 

 

test 폴더에 member 패키지를 생성한다. 

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(1L, "memberA", Grade.VIP);

        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);

        //then
        Assertions.assertThat(member).isEqualTo(findMember);

    }
}

 

 

 

 

 

* 인프런 '스프링 핵심 원리 -기본편' 강의를 참고하여 작성했습니다.