Mac에서 이클립스를 이용하여 Lombok 설치하고 사용하기.
Lombok은 getter/setter/constructor/toString/hash/equals등을 자동으로 생성해주는 멋진 툴이다.
그 사용법을 알아보자.
1. Lombok 다운로드 하기.
https://projectlombok.org/download.html
lombok.jar 1.16.6을 다운받자.
2. Lombok 실행하여 Eclipse와 연동하기.
준비사항 :
- JDK 최신버젼
- Eclipse 최신버젼
다운 받은 lombok.jar 파일 위치에서 다음과 같이 실행하자.
이전 준비 사항들이 이미 Mac에 설치 되어 있다는 가정하에 진행하겠다.
java -jar lombok.jar그러면 다음 화면이 나온다.
위 내용은 라는 의미이다.
IDE를 찾을 수 없다."확인"을 누르고
만약 IDE가 컴퓨터에 이미 설치되어 있다면 'Specify Location...' 버튼을 눌러서 수동으로 IDE가 설치된 경로를 지정해달라.
"Specify location..." 버튼을 클릭하자.
이클립스 경로에서 STS.ini를 찾아서 "Open"을 클릭하자.
"Install / Update" 를 클릭하여 Eclipse에 설치하자.
-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.300.v20150602-1417
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms2048m
-XX:MaxPermSize=512m
-Xverify:none
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Xdock:icon=../Resources/sts.icns
-Xmx2048m
-javaagent:../Eclipse/lombok.jar
마지막에 lombok.jar가 설치 된 것을 확인할 수 있다.
maven Depencency 추가하기 :
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.8</version><scope>provided</scope></dependency>
3. Lombok 이용하여 boilerplate code 제거하기.
Lombok features
val
final local 변수를 써야하는 번거로운 작업을 없애준다.
@NonNull
NullPointerException을 발생하지 않도록 미리 체크한다.
@Cleanup
자동 리소스 관리를 수행한다.: 안전하게 close()메소드를 호출한다.
@Getter / @Setter
getter/setter메소드를 자동으로 생성한다.
@ToString
lombok가 자동으로 toString 메소드를 생성해준다. 모든 필드들을 toString으로 노출시켜준다.
@EqualsAndHashCode
equals와 hashCode메소드를 자동으로 생성해준다. 객체의 필드들을 이용하여 구현하게 된다.
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
생성자를 만들어 준다.
@NoArgsConstructor : 파라미터 없는 생성자를 만들어준다.
@RequiredArgsConstructor : not null필드나 final필드들을 아규먼트로 하는 생성자를 만든다.
@AllArgsConstructor : 모든 파라미터를 이용하여 생성자를 만든다.
@Data
@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 를 모두 한번에 적용한 어노테이션이다.
@Value
불변 클래스들을 매우 쉽게 만든다.
@Builder
객체 생성을 빌더로 만들어준다.
@SneakyThrows
checked exceptions를 던진다. 이전에 thrown을 지정하지 않은 경우에 설정된다.
@Synchronized
synchronized가 올바르게 수행되도록 한다. locks를 볼 수 없을 것이다.
@Getter(lazy=true)
Getter을 생성한다. lazy하게.. 느린것이 좋은 것이다.
@Log
Logs를 사용할 수 있도록 해준다.
더 상세한 가이드를 보고자 한다면 다음 경로에서 확인해보자.
http://jnb.ociweb.com/jnb/jnbJan2010.html
4. Sample 예제
import lombok.Data;
public @Data class Hello {
int id;
String name;
}
@Data를 이용하여 한번에 적용해 보았다.
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@NoArgsConstructor
@ToString
public class Person {
@Getter
long personId;
@Getter @Setter
String name;
public static void main(String[] args) {
System.out.println("TEST : " + new Person());
}
}
@NoArgsConstructor을 이용해서 파라미터 없는 기본 생성자를 생성 시켜 보았다.
@ToString 을 이용하면 상기 모든 필드에 대해서 스트링으로 노출할 것이다.
@ToString 을 이용하면 상기 모든 필드에 대해서 스트링으로 노출할 것이다.
toString을 출력해보면 다음과 같다.
TEST : Person(personId=0, name=null)
EmoticonEmoticon