롬복 소개 및 설치하기
자바 개발자들의 필수 라이브러리 롬복 Lombok 인텔리제이에서는 플러그인으로 쉽게 설정이 가능하다.
- 롬복은 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본생성자, toString등을 어노테이션으로 자동 생성해준다.
build.gradle에 아래 코드를 추가하자 (dependencies { }안에 추가해주었다)
compile('org.projectlombok:lombok')

코끼리 refresh를 통해...내려받는다.
라이브러리를 다 받았다면 롬복 플러그인을 설치하자.
.ignore를 설치했을때와 마찬가지로 ctrl(Command)+shift+A 로 plugins Action을 선택하면 플러그인 설치 팝업이 나오고
lombok을 검색하여 install해준다.

롬복을 설정했으니 이제 기존코드를 롬복으로 리팩토링 해보도록 하자.
Hello Controller 코드를 롬복으로 전환하기

먼저 web pkg 안에 dto pkg를 추가해주었다.
앞으로 모든 응답 Dto는 이 Dto pkg에 추가하도록 하자.
이 pkg에 HelloResponseDto를 생성해준다.
HelloResponseDto의 코드는 아래와 같이 작성한다.
package com.zozos.book.springboot.web.dto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter //①
@RequiredArgsConstructor //②
public class HelloResponseDto {
private final String name;
private final int amount;
}
👉코드 설명
어노테이션 2개가 추가되었다.
① @Getter
- 선언된 모든 필드의 get method를 생성
② @RequiredArgsContructor
- 선언된 모든 final 필드가 포함된 생성자를 생성
- final이 없는 필드는 생성자에 미포함

이제 이 Dto에 적용된 롬복이 잘 작동하는지 간단한 테스트 코드를 작성해보자.
HelloResponseDtoTest class code는 아래와 같다.
package com.zozos.book.springboot;
import com.zozos.book.springboot.web.dto.HelloResponseDto;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class HelloResponseDtoTest {
@Test
public void 롬복_기능_테스트() {
//given
String name = "test";
int amount = 1000;
//when
HelloResponseDto dto = new HelloResponseDto(name, amount);
//then
assertThat(dto.getName()).isEqualTo(name); //①,②
assertThat(dto.getAmount()).isEqualTo(amount);
}
}
👉코드 설명
①assertThat
- assertj라는 테스트 검증 라이브러리의 검증 메소드이다.
- 검증하고 싶은 대상을 메소드 인자로 받고, 메소드 체이닝이 지원되어 isEqualTo와 같이 메소드를 이어서 사용할 수 있다.
②isEqualTo
- assertj의 동등 비교 메소드
작성한 method를 실행해보면 정상적으로 기능이 수행되는 것을 확인할 수 있다.
롬복의 @Getter로 get method가 @RequiredArgsConstructor로 생성자가 자동으로 생성되는 것이 증명되었다고 볼 수 있다.

HelloController에도 새로만든 ResponseDto를 사용하도록 코드를 추가해보자.
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name, //①
@RequestParam("amount") int amount){
return new HelloResponseDto(name, amount);
}
👉코드 설명
①RequestParam
- 외부에서 API로 넘긴 parameter를 가져오는 어노테이션
추가된 API를 테스트하는 코드를 HelloControllerTest에 추가한다.
//import된 것들 참고
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@Test
public void helloDto가_리턴된다() throws Exception{
String name = "hello";
int amount = 1000;
mvc.perform(get("/hello/dto")
.param("name", name) //①
.param("amount", String.valueOf(amount)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name", is(name))) //②
.andExpect(jsonPath("$.amount", is(amount)));
}
👉코드 설명
①param
- API 테스트할 때 사용될 요청 파라미터를 설정한다. (값은 String만 허용)
- 숫자/날짜 등 데이터도 등록할 때는 문자열로 변경해야한다.
②jsonPath
- JSON 응답값을 필드별로 검증할 수 있는 메소드
- $를 기준으로 필드명을 명시

json이 return 되는 API역시 정상적으로 통과하는 것을 확인할 수 있다.
'Dev' 카테고리의 다른 글
| Hello Controller 테스트 코드 작성하기 (0) | 2023.09.12 |
|---|---|
| 스프링 부트에서 테스트 코드를 작성하자 (1) | 2023.09.07 |
| [GitHub] GitHub ReadMe 꾸미기 (0) | 2023.07.22 |
| 인텔리제이에서 깃과 깃허브 사용하기 (0) | 2023.07.20 |
| Gradle 프로젝트를 Spring boot 프로젝트로 변경하기 (0) | 2023.07.18 |