출처: 스프링 입문(김영한)
비지니스 요구사항
회원 등록과 조회하는 기능을 가진다.
db는 정해지지 않았다고 가정한다.
데이터: 회원 ID, 이름
구조
추가 설명
컨트롤러: 매개변수로 서비스 객체 호출
서비스: 비지니스 로직(중복 회원가입은 안된다 등등) 구현
도메인: entity 즉 클래스 객체를 말한다.
레포지토리: db 접근, 저장 관리
Domain 만들기
Member 클래스 만들기
Repository 만들기
MemberRepository 인터페이스
MemoryMemberRepository (MemberRepository 인터페이스 구현체)
HashMap 사용방법 https://hianna.tistory.com/573
테스트 코드 작성
실제 작동되는지 확인하기 위해 테스트 코드를 작성하자.
JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다.
함수 앞에 @Test 어노테이션을 붙인다.
@afterEach 어노테이션을 이용하여 테스트 후마다 repository를 clean한다.
테스트 시 의존성 문제를 해결할 수 있다.
cleanStore함수 정의하기(MemoryMemberRepository.java)
테스트 코드
Assertions.assertThat 함수를 이용해 테스트 결과가 맞는지 확인한다. (assertj의 Assertions 사용, option+enter: static 변수)
Service 만들기
서비스: 이름을 비지니스적으로 짓기
잘 되었는지 확인하려면, 테스트 케이스 작성하기
테스트케이스 작성
command+shift+T: 테스트케이스 구조 만들어준다.
테스트케이스의 함수는 실제 코드에 포함되지않으므로 보기 쉽게 한글로 작성해도 좋다.
테스트케이스의 머리-가슴-배
1. given
기반 데이터
2. when
검증하는 것
3. then
검증부
올바른 오류인지 확인하고, 로그 메세지까지 같은지 확인한다. - 내가 찾는 그 오류가 맞는지 확인
의존성 주입(DI)
test시에 memberRepository가 각각 생성되어 사용한다.
주입하는 방향으로 바뀌면 같은 repository를 사용할 수 있다.
단축키
- option+Enter로 method import, static 변수 만들기
- option+command+V: 변수 추출
- command+P: 함수 변수 정보 알기
- shift+fn+f6: 이름 변경
'Spring > 스프링 입문' 카테고리의 다른 글
DB 접근 기술 (2) | 2023.01.24 |
---|---|
웹 MVC 개발 (0) | 2023.01.22 |
스프링 빈과 의존관계 (0) | 2023.01.22 |
스프링 웹 개발 기초 (0) | 2023.01.21 |
spring 초기 설정 ~ 빌드+실행 (0) | 2023.01.21 |