Spring/Spring core basic
[Spring core basic] 06 - 회원 도메인 개발
Kloong
2022. 5. 2. 01:05
참고
더보기
Spring core basic 시리즈는 김영한 님의 "스프링 핵심 원리 - 기본편" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다. 마크다운을 잘 쓰지 못해서 가독성이 조금 떨어지는 점 양해 바랍니다.
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
회원 도메인 개발
현재까지의 프로젝트 파일 구조
테스트 코드
MemberServiceTest.java
package com.kloong.corebasic1.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 framework를 전혀 사용하지 않고 순수 Java로 코딩했다. 인터페이스를 활용해서 역할과 구현을 구분했고, 다형성을 적용했지만 OCP와 DIP가 완전히 지켜지지 않았음을 코드에서 확인할 수 있다.
MemberServiceImpl.java
public class MemberServiceImpl implements MemberService{
private final MemberRepository memberRepository = new MemoryMemberRepository();
//생략...
}
MemberService interface의 구현체 MemberServiceImpl의 코드를 살펴보면, MemoryMemberRepository를 사용하기 위해 직접 객체를 생성하는 부분을 확인할 수 있다.
즉 인터페이스와 구현체 모두에 의존하고 있으므로 DIP를 지키지 않았다. 이로 인해 구현체가 변경될 때 해당 코드를 변경해야 하므로 OCP를 지키지 못하게 된다.
이 부분은 추후에 Spring을 활용하여 수정할 것이다.