Lombok 이란?

간단하게 BEAN(POJO) 를 도와주는 라이브러리 입니다. 

annotation을 이용하여 getter, setter 등을 생성한다거나, toSring 객체를 지원 한는 등의 기능을 제공 합니다.



사용법은 IDE를 사용할 경우와 javac 를 이용한 compile을 할 경우로 나누어 집니다.


저는 Intellij 기준으로 설명을 하겠습니다.


Intellij 에서 사용하기 위해서는 Lombok plugin을 설치 해야 합니다.

설치 방법은, 다음과 같습니다.


  • Using IDE built-in plugin system on Windows:
    • File > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
  • Using IDE built-in plugin system on MacOs:
    • Preferences > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
  • Manually:
    • Download the latest release and install it manually using Preferences > Plugins > Install plugin from disk...

원본 : https://github.com/mplushnikov/lombok-intellij-plugin


설치 이후에는 IDE를 재기동 해야 합니다.


이후 Lombok 을 사용하기 위한 compiler 설정을 변경 합니다.


  • install plugin
  • change compiler setting:
    • ... > Compiler > Java Compiler > Use Compiler: Eclipse
    • ... > Compiler > Annotation Processors > Enable annotation processing: checked (default configuration)
    • ... > Compiler > Additional build process VM options: -javaagent:lombok.jar

원본 : https://github.com/mplushnikov/lombok-intellij-plugin


이 설정을 하지 않을 경우 간혈적으로 오류가 발생하거나, 기동시 getter setter method를 찾을 수 없다고 표출 될 수 있습니다.


마지막으로 Lombok 에서 제공하는 기능에 대한 정리 입니다.


val : final 키워드 대신 사용하는 변수 선언 class

@NonNull : 해당 값이 Null 일경우 NullPointerException을 발생한다.

@Cleanup : 자동 리소스 관리 : close() 메소드를 귀찮음 없게 안전하게 호출

@Getter / @Setter : getter, setter를 생성하지 않도록 지원

@ToString : 모든 필드를 출력하는 toString() 메소드 생성

@EqualsAndHashCode : hascode 와 equals 메소드를 생성

@NoArgsConstructor, @RequriedArgsConstructor and @AllArgsConstructor : 인자 없는 생성자 생성, 필수 인자만 있는 생성자 생성, 모든 인자를 가진 생성자 생성

@Data : 다음을 처리 합니다 - @ToString, @EqualsAndHashCode, @Getter(모든 필드), @Setter(모든 필드-final로 성언되지 않은), @RequiredArgsConstructor!

@Value : 불변 클래스를 쉽게 생성

@Builder : Builder API 처럼 사용 할수 있도록 지원

@SneakyThrows : Exception 발생시 체크된 Throable로 감싸서 전달

@Synchronized : 메소드에서 동기화 Lock을 설정

@Getter(lazy=true) : 동기화를 이용하여 최초 1회만 getter가 호출

@Log : 종류별 로그를 사용할 수 있도록 한다. (@Log, @Slf4j, @CommonLog 등)

Configuration system : lombok을 사용하기 위해서 최초 설정

Experimental features : 준비중인 추가 기능



Lomobk library download LINK

Lombok site : https://projectlombok.org/features/index.html

Lombok tutorial : http://jnb.ociweb.com/jnb/jnbJan2010.html


Posted by lahuman