본문 바로가기
Dev

롬복 소개 및 설치하기

by cosmog 2023. 9. 14.
반응형

롬복 소개 및 설치하기


자바 개발자들의 필수 라이브러리 롬복 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역시 정상적으로 통과하는 것을 확인할 수 있다.

반응형