-
[김영한 스프링] 03. 회원 도메인Spring/스프링 핵심 원리 - 기본편 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);
}
}스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[김영한 스프링] 06. 새로운 할인 정책 적용과 문제점, 관심사의 분리 (0) 2023.04.12 [김영한 스프링] 05. 새로운 할인 정책 개발 (0) 2023.04.08 [김영한 스프링] 04. 주문과 할인 도메인 (1) 2023.04.07 [김영한 스프링] 02. 프로젝트 생성 (0) 2023.04.05 [김영한 스프링] 01. 객체 지향 설계와 스프링 (0) 2023.04.04