Spring/스프링 입문

회원 관리 - 백엔드 개발

mint* 2023. 1. 22. 19:06
728x90

출처: 스프링 입문(김영한)

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

비지니스 요구사항

회원 등록과 조회하는 기능을 가진다.

db는 정해지지 않았다고 가정한다.

데이터: 회원 ID, 이름

 

구조

 

추가 설명

https://velog.io/@sloools/Spring-%EC%9B%B9%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0

 

[Spring] 웹애플리케이션 계층구조

Controller클라이언트가 이용할 앤드포인트클라이언트의 요청을 어떻게 처리할 지 정의화면에서 넘어오는 매개변수를 이용해 서비스 객체를 호출하는 역학Service비즈니스 로직 구현Http 통신을 위

velog.io

 

 

 

컨트롤러: 매개변수로 서비스 객체 호출

서비스: 비지니스 로직(중복 회원가입은 안된다 등등) 구현

도메인: entity 즉 클래스 객체를 말한다. 

레포지토리: db 접근, 저장 관리

 

 

Domain 만들기

Member 클래스 만들기

 

Repository 만들기

MemberRepository 인터페이스

 

MemoryMemberRepository (MemberRepository 인터페이스 구현체)

 

HashMap 사용방법 https://hianna.tistory.com/573

 

[Java] HashMap key, value 전체 출력하기

map.entrySet() map.keySet(), mep.get() map.keyValue() - value만 가져오기 Iterator forEach (Java 8 이후) 1. map.entrySet() public Set entrySet() map.entrySet() 메소드는 해당 map의 key와 value를 가지는 Set 객체를 리턴합니다. 코드

hianna.tistory.com

테스트 코드 작성

실제 작동되는지 확인하기 위해 테스트 코드를 작성하자.

 

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

검증부

 

테스트 전,후 할일 작성

 

 

join함수 검증

 

올바른 오류인지 확인하고, 로그 메세지까지 같은지 확인한다. - 내가 찾는 그 오류가 맞는지 확인

의존성 주입(DI)

test시에 memberRepository가 각각 생성되어 사용한다.

주입하는 방향으로 바뀌면 같은 repository를 사용할 수 있다.

 

단축키

  • option+Enter로 method import, static 변수 만들기
  • option+command+V: 변수 추출
  • command+P: 함수 변수 정보 알기
  • shift+fn+f6: 이름 변경
728x90