회원 도메인 개발
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);
}
}
* 인프런 '스프링 핵심 원리 -기본편' 강의를 참고하여 작성했습니다.
'웹 개발 > Spring' 카테고리의 다른 글
[Spring 기본] 주문과 할인 도메인 개발 (0) | 2024.08.08 |
---|---|
[Spring 기본] 주문과 할인 도메인 설계 (0) | 2024.08.08 |
[Spring 기본] 회원 도메인 설계 (0) | 2024.08.02 |
[Spring 기본] 비즈니스 요구사항과 설계 (0) | 2024.08.01 |
[Spring 기본] 프로젝트 생성 (0) | 2024.08.01 |