스프링 부트와 AWS로 혼자 구현하는 웹 서비스(1)

김나우·2022년 3월 28일
0

이 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
를 보며 공부한 내용을 정리하는 포스팅입니다.

스프링을 공부하며 뭔가 내손으로 만들어보면 좋겠다.. 라는 생각을 하며 책을 찾아보고 있었다.
그러던 도중 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 이란 책을 발견하게 되었고, 후기도 매우 좋아 바로 구매를 해 공부를 시작했다.

이 책에서는 IDE를 intelliJ를 사용한다 내가 다니는 학교는 intelliJ 라이센스를 사용할 수 있어 이미 쓰고 있었으므로 매우 편리했다


프로젝트 생성

이 책에서는 Gradle를 사용하기 때문에 gradle로 프로젝트를 생성해 준다.

프로젝트가 생성된 후 build.gradle이다.

Gradle이란 그루비(Groovy)를 기반으로 한 빌드 도구이다.

build.gradle에 다음과 같은 코드들을 추가해준다

위 코드는 이 프로젝트의 플러그인 의존성 관리를 위한 설정이다

ext -> build.gradle에서 사용하는 전역변수를 설정하겠다는 의미
여기서는 springBootVersion 전연벽수를 생성하고 그 값을 '2.1.7.RELEASE로 하겠다는 의미이다.

repositories는 각종 의존성 (라이브러리)들을 어떤 원격 저장소에서 받을지를 정한다.


스프링 부트에서 테스트 코드 작성하기

테스트 코드 소개

TDD와 단위 테스트(Unit Test)는 다른 이야기이다
TDD는 테스트가 주도하는 개발이다. 테스트 코드를 먼저 작성하는 것부터 시작한다.

반면 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다.

이 책에서는 TDD가 아닌 단위 테스트 코드를 배운다.

테스트 코드를 작성해야 하는 이유

  • 단위 테스트는 개발단계 초기에 문제를 발견하게 도와준다
  • 단위 테스트는 기능에 대한 불확실성을 감소시킬 수 있다.
    ...

여러가지 더 있지만 궁금하면 책을 사서 보자 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

테스트 코드를 작성하면 사람이 눈으로 검증하지 않게 자동검증이 가능하고
개발자가 만든 기능을 안전하게 보호해준다

테스트 코드 작성하기


메인 클래스를 생성해준다
@SpringBootApplication으로 인해 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성 모두 자동으로 설정된다. 이 클래스는 항상 프로젝트의 최상단에 위치해야 한다


HelloController라는 컨트롤러를 하나 생성해 주었다

@RestController : 컨트롤러를 JSON으로 반환하는 컨트롤러로 만들어준다
@GetMappling : HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어 준다

HelloControllerTest 클래스를 생성해 주었다.

@Runwith(SpringRunner.class)
-> 테스트를 진행할 때 Juint에 내장된 실행자 외에 다른 실행자를 실행시킨다
-> 즉, 스프링 부트 테스트와 Junit 사이에 연결자 역할을 한다.

@WebMvcTest
-> 여러 스프링 테스트 어노테이션 중, Web(spring mvc)에 집중할 수 있는 어노테이션 이다
-> 선언할 경우 @Controller, @ControllerAdvice등을 사용할 수 있다

@Autowired
-> 스프링이 관리하는 빈(Bean)을 주입 받는다

@private MockMvc mvc
-> 웹API를 테스트할 때 사용

@mvc.perform(get("/hello"))
-> MockMvc를 통해 /hello 주소로 HTTP GET 요청을 함.

@.andExpect(status().isOk())
-> mvc.perform의 결과를 검증
-> HTTP Header의 Status를 검증

@.andExpect(content().string(hell))
-> mvc.perform의 결과를 검증
-> 응답 본문의 내용을 검증

하고 테스트 코드를 실행했는데 오류가 나왔다.

멍청했다 바로 위에 @SpringBootApplication으로 인해 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성 모두 자동으로 설정된다. 이 클래스는 항상 프로젝트의 최상단에 위치해야 한다
라고 해놓고 패키지를 잘못 생성해서 오류가 떳다

테스트 성공

실행도 정상적으로 됐다.


롬복 소개 및 설치

롬복은 자바 개발할 때 자주 사용하는 코드인 Getter, Setter, 기본생성자, toString 등을
어노테이션으로 자동 생성해준다.
프로젝트에 롬복을 추가하기 위해 build.gradle에 코드를 추가해준다

위 코드를 추가 해주고

plugin에서 lombok을 다운로드 받아준다

그리고 나서 Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors 에서
Enable annotation processing을 체크해준다

롬복 사용하기

HelloResponseDto 클래스를 작성해준다

@Getter -> 선언된 모든 필드의 get 메소드를 생성해준다
@RequiredArgsConstructor : 선언된 모든 final 필드가 포함된 생성자를 생성해 준다.

그리고 나서 HelloResponseDtoTest 클래스를 만들어 준다.

assertThat
-> assertj라는 테스트 검증 라이브러리의 검증 메소드이다

@RequestParam
-> 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션이다
-> 여기서는 외부에서 name(@RequestParam("name"))이란 이름으로 넘긴 파라미터를
메서드 파라미터 name(String name)에 저장하게 된다.

profile
안녕하세요

0개의 댓글

관련 채용 정보