Search
Duplicate

회원관리 예제 - 백엔드 개발

태그
예제
백엔드
스프링부트
인프런
비즈니스 요구사항 정리
데이터 : 회원 ID, 이름
기능 : 회원 등록, 조회
아직 데이터 저장소가 선정되지 않았다고 가정
일반적인 웹 어플리케이션 계층구조
컨트롤러 : 웹 MVC 의 컨트롤러 역할
MVC 에 대해 알고 싶다면? MVC 와 템플릿 엔진
서비스 : 핵심 비즈니스 로직 구현
리포지토리 : 데이터 베이스에 접근, 도메인 객체를 DB 에 저장하고 관리한다.
도메인 : 비즈니스 도메인 객체
예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리된다.
클래스 의존관계
데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계한다.
데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정한다.
개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용한다.
회원 도메인과 리포지토리 만들기
회원 객체
회원 리포지토리 인터페이스
회원 리포지토리 메모리 구현체
회원 리포지토리 테스트 케이스 작성
개발한 기능을 실행해서 테스트 할 때
자바의 main 메서드를 이용한다.
웹 애프리케이션의 컨트롤러를 이용한다.
이러한 방법은 여러 단점이 있기 때문에 JUnit 이라는 프레임 워크로 테스트를 실행, 문제를 해결한다.
회원 레포지토리 메모리 구현체 테스트
src/test/java 하위 폴에 구성
@AfterEach : 한번에 여러 테스트를 실행하면 메모리 DB 에 직전 테스트의 결과가 남을 수 있다. 이렇게 되면 다음 테스트가 실패할 가능성이 있으므로 @AfterEach 를 사용해 메모리 DB 에 저장된 데이터를 삭제한다.
테스트는 각각 독립적으로 실행 되어야 한다. 테스트 순서에 의존관계가 있는 것은 좋은 테스트가 아니다.
회원 서비스 개발
회원 서비스
회원 서비스 테스트
@BeforeEach : 각 테스트 실행 전에 호출된다. 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존관계도 새로 맺어준다.