회원 관리 예제 - 백엔드
비즈니스 요구사항 정리
데이터
회원 ID
이름
기능
회원 등록
회원 조회
아직 데이터 저장소는 선정되지 않음
일반적인 웹 애플리케이션 구조

컨트롤러
웹 MVC의 컨트롤러 역할
서비스
핵심 비즈니스 로직 구현
도메인
비즈니스 도메인 객체
회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리되는 데이터를 말한다.
리파지토리
데이터 베이스에 접근 하는 객체
도메인 객체를 DB에 저장하고 관리한다.
클래스 의존 관계 설정

아직 DB가 정해지지 않았으므로 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계한다.
DB는 RDB, NoSQL 등 다양한 저장소를 고민중인 상황으로 가정한다.
개발을 진행하기 위해 초기 개발 단계에서는 가벼운 메모리 기반의 데이터 저장소를 사용한다.
회원 객체
회원 Repository
Reference
atomic vs volatile vs synchronized
테스트
After Each
한 번에 여러 테스트를 하면 메모리 DB에 직전 테스트의 결과가 남을 수 있다. 그럼 다음 테스트에 영향이 가므로 각 테스트가 종료될 때마다 메모리 DB에 저장된 데이터를 삭제한다.
테스트는 각각 독립적으로 실행되어야 한다. 테스트 순서에 의존 관계가 있으면 좋지 않다.
회원 Service
위 코드는 회원 Service가 Repository를 직접 생성하고 있다.
회원 Service를 생성할 때 DI 하도록 변경한다.
테스트
BeforeEach
각 테스트 실행 전에 호출되는 메서드
Last updated
Was this helpful?