lombok : http://www.projectlombok.org/
출처 : http://gitblog.ihoney.pe.kr/blog/2013/01/23/use-lombok-annotation-in-java-project/
Lombok을 사용해봅시다.
자바에서 DTO, VO, Domain Object 만들다보면, 멤버필드에 대한 Getter/Setter 메소드, Equals, hashCode, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등으로 불필요하게 코드가 길어지는 경우를 볼 수가 있다. 불필요하지만 생성해야 하는 코드들을 줄일 수 있는 방법이 있다면, 얼마나 좋을까?
Project Lombok 소개
- 사이트 : Project lombok
- Lombok Feature : http://projectlombok.org/features/index.html
- Java Source를 컴파일할 때, Lombok의 Annotation을 확인해서 그에 적합한 메소들을 생성해주는 방식이라고 이해를 하면 되겠다.
적용사례
Lombok annotation을 적용하지 않은 현재 스터디에서 사용하는 User domain 코드
|
Lombok Annotation 적용코드
|
90라인이 넘는 코드를 30여줄로 1/3 줄일 수가 있다.
설치방법
1. lombok.jar 다운로드
a.lombok.jar 직접 다운로드
- http://projectlombok.org/download.html
b. pom.xml dependency 추가
|
2. lombok 설치하기
a. lombok.jar 직접 다운로드의 경우 :
- 방법1. 다운로드 경로 이동 후 lombok.jar 더블클릭으로 실행
- 방법2. cmd 창에서 다운로드 경로 이동 후 java -jar lombok.jar 실행
b. Maven pom.xml에 추가한 경우 :
- 설치 경로 이동 : cd ~/.m2/repository/org/projectlombok/lombok/
- 위(a) 방법1 또는 방법2로 실행
c. IDE 설치 위치[Specify locaion…]를 검색해서 경로에 추가한다.
d. eclipse.ini or sts.ini 파일 변경되고 동일한 경로에 lombok.jar 추가됨
e. 별도로 프로젝트 내에 라이브러리를 추가해서 사용할 수도 있겠다.
소스코드에서 Lombok Annotation을 추가해보자
lombok features : http://www.projectlombok.org/features/index.html
- @Data
- @Getter/@Setter
- 접근제어 : AccessLevel[PUBLIC, PROTECTED, PACKAGE, PRIVATE]을 통해서 접근레벨을 제한할 수 있다.
- 예 : @Getter(AccessLevel.PACKAGE), @Setter(AccessLevel.PRIVATE)
- getter/setter 관례에 따라서 get필드명, set필드명 메소드가 생성됨
- Getter
- Setter
- 접근제어 : AccessLevel[PUBLIC, PROTECTED, PACKAGE, PRIVATE]을 통해서 접근레벨을 제한할 수 있다.
- @EqualsAndHashCode
- 코드에서 객체의 비교 등의 용도로 사용되는 equals(), hashCode() 메소드의 코드를 절감할 수가 있다.
- @EqualsAndHashCode(exclude={“field1”, “field2”}) 처럼 필요에 따라서 특정 필드를 제외할 수가 있다.
- @ToString
- 로그Log에서 객체의 내용을 확인하는 등의 용도로 쓰이는 toString() 메소드를 대신할 수 있다.
- @ToString(exclude=”field1”) 처럼 필요에 따라서 특정 필드를 제외할 수 있다.
- @Log
- 최근에 알게된 기선님의 글() 녀석인데, Logger와 관련된 코드들을 줄일 수 있다.
- 추가하면 자동으로 필드에 private static final Logger log 가 추가된다. 이후 로그를 찍으려는 곳에서는 log.error(), log.warn(), log.debug(), log.info() 형태로 사용하면 된다.
============================================================================================================
※ lombok이 이클립스에 설치가 안되는 경우
방법1.
1. lombok.jar를 eclipse 폴더에 복사한다.
2. eclipse.ini 맨 아래에 아래 붉은 코드를 넣는다.
-javaagent:C:\dev\eclipses\eclipse-jee-2018-09-win32-x86_64\lombok.jar |
방법. 이클립스 이전 버전
1. lombok.jar를 eclipse 폴더에 복사한다.
2. eclipse.ini 맨 아래에 아래 붉은 코드를 넣는다.
-vmargs |
============================================================================================================
Gradle 로 build 시
build.gradle
// plugins 선언은 build.gradle 최상단에 해야 한다. (apply 보다도 먼저) |
============================================================================================================
Lombok 사용시 컴파일 경고 없애는 방법
Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.
좀더 자세한 사용법은 아래 링크에 코드를 참조
http://projectlombok.org/features/EqualsAndHashCode.html
간단히 이야기 하면 별도로 구현하는 Value Object 가 없다면 위에 callSuper=false 있다면 위 링크를 보고 참조해서 구현하면 됩니다.