lombok 이란
롬복은 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해 줍니다.
build.gradle 에 아래 항목 추가
dependencies {
//lombok
implementation('org.projectlombok:lombok')
testImplementation('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
}
lombok 플러그인 설치
- Enable Annotation processing 체크
- 롬복은 프로젝트마다 설정해야 한다. (플러그인은 한 번만 설치하면 됨)
이전에 만들었던 HelloController 를 lombok으로 전환하기
1. dto 추가
(앞으로 모든 응답 dto는 dto 패키지에 담을 예정)
HelloResponseDto
package com.example.boilerplate.web.dto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
@Getter
• 선언된 모든 필드의 getter를 생성해줍니다.
@RequiredArgsConstructor
• 선언된 모든 final 필드가 포함된 생성자를 생성해 줍니다.
• final이 없는 필드는 생성자에 포함되지 않습니다.
1-1. dto 테스트
HelloResponseDtoTest
package com.example.boilerplate.web.dto;
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);
}
}
- Junit의 기본 assertThat() 메서드 말고, assertj의 assertThat() 메서드 사용하기
- 테스트를 통해, junit이 생성자와 getter를 잘 생성한다는 것을 확인
2. ResponseDto 를 사용하도록 HelloController에 추가
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam("amount") int amount) {
return new HelloResponseDto(name, amount);
}
@RequestParam
• 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션입니다.
• 여기서는 외부에서 name (@RequestParam("name")) 이란 이름으로 넘긴 파라미터 를 메소드 파라미터 name(String name)에 저장하게 됩니다.
2-1. dto response 테스트
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)));
}
- is() : hamcrest 패키지의 메서드로 import 해야함.
jsonPath()
• JSON 응답값을 필드별로 검증할 수 있는 메소드입니다.
• $를 기준으로 필드명을 명시합니다.
• 여기서는 name과 amount를 검증하니 $.name, $.amount로 검증합니다.
'WEB > Java' 카테고리의 다른 글
static, final 키워드에 대하여 - ① static 키워드 (0) | 2022.02.08 |
---|---|
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 03-1 JPA 적용 (0) | 2022.02.02 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 02-1 테스트코드 작성 (0) | 2022.01.16 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 01 gradle 설정 (0) | 2022.01.08 |
Java 개발환경 설정하기 (Mac/IntelliJ) (1) | 2021.12.17 |