비즈니스 요구사항 정리

  1. 데이터
    • 회원 ID
    • 이름
  2. 기능
    • 회원 등록, 조회
  3. 아직 데이터 저장소가 선정되지 않음

여기에서 MemberRepository를 Interface로 생성하는 이유는 데이터 저장소가 선정되지 않았기 때문입니다.

 

추후에 구체적인 기술이 선정되고 나면 바꿔 끼우는 작업을 진행하면 됩니다.

 

Controller : 외부 요청을 받고,

Service : 비즈니스 로직 처리

Repository : 데이터 저장

 

회원 Domain과 Repository 만들기

먼저 domain package를 만들어 줍니다.

 

 

그 후, domain package 내 Member라는 Class를 만들어 주는데 사용할 데이터인 ID, Name 변수를 선언해주고 Getter와 Setter를 선언해줍니다.

 

 

그 다음은 repository라는 package를 생성해주고 그 내부에 MemberRepository Interface를 생성해주겠습니다.

 

그 후, 구현체를 repository package에 MemoryMemberRepository Class를 만들어 줍니다.

 

MemoryMemberRepository Class에서 implements MemberRepository를 해주게 되는데

 

Implement methods 단축키는 ALT + Enter를 누르면 위와 같은 창이 나오게 되고 계속 실행을 해주면 아래 사진과 같이 생성됩니다.

변수

그 후, 변수를 선언해줍니다.

 

store는 member 변수들이 저장될 변수, sequence는 member의 ID 값을 지정해주기 위해 사용합니다.

 

save 기능

save

save 함수에는 멤버를 저장할 수 있는 기능을 만들어 줍니다.

 

멤버마다 다른 아이디값을 지정해야 하므로 sequence++를 해줍니다.

 

findById 기능

null 이 반환될 가능성이 있기 때문에 Optional.ofNullable로 감싸줍니다.

 

 

findByName 기능

 

findAll 기능

 

 

Repository TEST Case 작성 - JUnit

이제 작성한 코드를 검증하는 시간입니다.

 

이때 TEST Case를 작성하여 검증을 진행하면 됩니다.

 

먼저 테스트를 위해 repository 패키지를 생성해주고, 클래스를 생성해줍니다.

 

 

그리고 위와 같이 환경을 구성하여 테스트를 진행할 수 있습니다.

 

그런데 Test 클래스 전체를 실행하면 오류가 발생합니다.

 

그 이유는 테스트를 진행할때 클래스 내부에 있는 각각의 테스트가 순서대로 진행되지 않고 무작위로 진행되기 때문에

 

이미 repository 안에 "spring1" 과 "spring2" 가 저장되어 있어서 오류가 발생한겁니다.

 

그래서 테스트를 진행할 때마다 repository를 초기화 시켜주어야 합니다.

 

먼저 MemoryMemberRepository.java 로 가서 store를 비워주는 함수를 만들어 줍니다.

 

그리고 MemoryMemberRepositoryTest.java에 위와 같은 @AfterEach를 추가해줍니다.

 

@AfterEach 는 테스트가 끝날때마다 실행되는 함수입니다.

 

예를 들어, save() -> afterEach() -> findByName(0 -> afterEach() -> findAll() -> afterEach() 이런 식으로 실행됩니다.

 

사실 자동으로 Test를 생성해주는 단축키가 있습니다.

 

바로 Ctrl + Shift + T 입니다.

 

 

Service 만들기

service package

 

 

이제 기능을 구현했으니 기능이 실제로 쓰이는 service를 만들어 보겠습니다.

 

첫째로 service package를 생성해주고 MemberService 클래스를 생성해줍니다.

 

그 후, 아래와 같이 기능이 동작하도록 함수들을 생성해줍니다.

이제 Test를 해보겠습니다.

 

위에서 언급했던 것처럼 Ctrl + Shift + T를 눌러 Test 코드를 생성해줍니다.

 

 

Service Test Case

 

 

 

 

 

 

 

 

 

 

출처 : 인프런 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한 강사님)

'Web > backend' 카테고리의 다른 글

07 - 02. 회원 관리 예제  (0) 2022.11.03
06. API - 정리  (0) 2022.10.05
05. 정적 컨텐츠, MVC  (0) 2022.10.04
04. 빌드하고 실행하기  (0) 2022.10.04
03. Welcome Page 만들기  (0) 2022.09.30

+ Recent posts