본문 바로가기

Development/Spring Framework

스프링 부트 롬복 추가하기

 

롬복은 getter, setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해줍니다. 인텔리제이에서는 플러그인으로 쉽게 설정이 가능합니다.

 

롬복(Lombok) 추가하기

 

  1. build.gradle 파일에 compile('org.projectlombok:lombok:')을 추가한 뒤 새로고침을 해주어 라이브러리를 내려받습니다.

  2. 롬복 플러그인을 설치합니다.

    Command + Shift + A (맥 기준) 단축키 후 Plugins를 입력해 설치 팝업으로 이동합니다.

  3. Marketplace 탭에서 Lombok을 검색해 설치한 뒤 인텔리제이를 재 시작합니다.

플러그인 설치는 한 번만 하면 되지만, build.gradle에 라이브러리를 추가하는 것과 Enable annotation processing을 체크하는 것은 프로젝트마다 진행해야만 합니다.


DTO에 롬복(Lombok) 적용하기

 

접근자/설정자 자동 생성

클래스 수준에 Annotation을 선언해주는 것입니다.

 

  • @Getter

    선언된 변수에 대해 getOOO 메서드를 자동으로 생성합니다.

  • @Setter

    선언된 변수에 대해 setOOO 메서드를 자동으로 생성합니다.

 

생성자 자동 생성

클래스 수준에 Annotation을 선언해주는 것입니다.

 

  • @RequiredArgsConstructor

    final 혹은 @NonNull 변수만 생성자의 파라메터로 받는 생성자를 생성합니다. 이때 final이 없는 필드는 생성자에 포함되지 않습니다.

  • @NoArgsConstructor

    파라미터가 없는 기본 생성자를 생성합니다.

  • @AllArgsConstructor

    모든 변수를 파라미터로 받는 생성자를 생성합니다.

 

DTO 테스트

 

 

  • assertThat

    assertj라는 테스트 검증 라이브러리의 검증 메소드입니다.
    검증하고 싶은 대상을 메서드 인자로 받습니다.
    메소드 체이닝이 지원되어 isEqualTo와 같이 메서드를 이어서 사용할 수 있습니다.

  • isEqualTo

    assertj의 동등 비교 메서드입니다.
    assertThat에 있는 값과 isEqualTo의 값을 비교해 같을 때에만 성공입니다.

 

 

성공할 경우 위와 같이 통과함을 확인할 수 있습니다.

 

 

JUnit의 assertThat VS assertj의 assertThat

 

 

  • assertj의 장점은 CoreMatchers와 달리 추가적인 라이브러리를 필요하지 않습니다.

    JUnit의 assertThat을 사용하면 is()와 같이 CoreMatchers 라이브러리가 필요합니다.

  • 자동완성이 좀 더 확실하게 지원됩니다.

    IDE에서는 CoreMatchers와 같은 Matcher 라이브러리의 자동완성 지원이 약합니다.
    즉, Matcher는 메서드를 외우거나 서칭하며 사용해야 하는데, assertj 라이브러리의 assertThat은 외우지 않아도 됩니다.

 

DTO 테스트

 

 

[ import static org.hamcrest.Matchers.is; ]를 import 받았습니다.

 

 

JSON이 리턴되는 API 또한 테스트가 통과되는 것을 확인할 수 있습니다.