Back-end/Spring

[SpringBoot] 롬복(Lombok) 적용하기

poppy 2020. 11. 15. 16:03
반응형

이전 포스팅에 이어서 롬복을 적용하는 것을 해보겠습니다! 이전 코드에 롬복을 적용하겠습니다

롬복이 무엇인지에 대해 궁금하시다면 다음 링크를 참조해주세요 =)

soohyun6879.tistory.com/26?category=886455

 

Lombok , JUnit , log4j / slf4j

1. Lombok(롬복) Lombok은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메소드 작성 코드를 줄여주는 라이브러리입니다. Java 기반에서 기계적으로 작성하는 VO, DTO, Entitiy 관련 작업을 쉽게 하..

soohyun6879.tistory.com

 

1. 라이브러리 추가 및 플러그인 다운

 

buid.gradle 파일의 dependencies에 다음 문장을 추가해줍니다

compile('org.projectlombok:lombok')

[File] - [Settings] - [Plugins] 에서 Lombok을 검색한 후 "Install"을 눌러 설치해줍니다

2. 다음과 같이 패키지와 파일을 만들어줍니다

3. HelloResponseDto

@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
    private final String name;
    private final int age;
}

@Getter -  따로 get메소드를 만들어주지 않고 롬복을 이용해 get메소드를 만들어줄 수 있습니다

@RequiredArgsConstructor - 모든 final 필드에 대해 생성자를 생성해줍니다. 의존성 주입의 편의성을 위해 사용됩니다

 

4. HelloResponseDto

public class HelloReponseDtoTest {
    @Test
    public void 롬복테스트() {
        //given
        String name = "HongGildong";
        int age = 20;

        //when
        HelloResponseDto dto = new HelloResponseDto(name, age);

        //then
        assertThat(dto.getName()).isEqualTo(name);
        assertThat(dto.getAmount()).isEqualTo(age);
    }
}

assertThat() - assertj의 검증 메소드로 값을 비교할 수 있습니다 검증하고 싶은 것을 메소드 인자로 받습니다

isEqualTo() - 비교 메소드로 인자로 받은 값과 같은지 비교합니다

assertThat(dto.getName()).isEqualTo(name); - dto의 name 값을 가져와 name과 값이 같은지 비교합니다

 

5. HelloController

이전 코드에 다음 코드를 추가합니다

@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("age") int age) {
    return new HelloResponseDto(name, age);
}

@RequestParam - 외부에서 API로 넘긴 파라미터를 가져옵니다 

@RequestParam("name") String name - 외부에서 name으로 넘긴 파라미터를 가져와서 name변수에 저장합니다

 

6. HelloControllerTest

이전 코드에 다음 코드를 추가합니다

@Test
public void helloDto리턴() throws Exception {
    String name = "HongGildong";
    int age = 20;

    mockMvc.perform(
           get("/hello/dto")
                  .param("name", name).param("age", String.valueOf(age)))
           .andExpect(status().isOk())
           .andExpet(jsonPath("$.name",is(name)))
           .andExect(jsonPath("$.age",is(age)));
 }
  

param - 요청할 파라미터를 설정합니다, 넘겨주는 값은 String만 가능하므로 age는 형변환을 해줍니다

.param("name", name) - name인 "HongGildong"을 name으로 넘겨줍니다

jsonPath() - JSON 응답값을 검증하는 메소드입니다. "$.필드명" 으로 원하는 필드를 검증합니다

.andExpet(jsonPath("$.name",is(name))) - name 필드를 name인 "HongGildong" 인지 검증합니다

반응형