1. 롬복(Lombok) 이란?
롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프로퍼티)에 대한 Getter/Setter, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등 반복적으로 만드는 코드를 어노테이션을 통해 코드를 줄여주는 라이브러리입니다.
2. 롬복(Lombok) 설치방법
2.1 Maven 이용시
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
2.2 롬복 jar 직접 다운로드
http://projectlombok.org/download.html
다운받은 lombok.jar 파일을 더블클릭합니다. Specify location 버튼을 눌러 eclipse.ini 폴더를 지정하고, 확인 버튼을 누르면 Eclipse가 설치되어있는 목록이 나옵니다. Install/Update 버튼을 눌러 설치 한 후 Quit Installer 버튼을 누릅니다.
3. 롬복 사용예시
다음 코드가 롬복 사용시 어떻게 되는지 살펴보겠습니다.
public class ExampleVO {
private final String name;
private int age;
public SimpleVO(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name=" + name + ", age=" + age;
}
}
public @Data class ExampleVO {
private final String name;
private int age;
}
코드가 아주 간단해지고 보기 편해진것을 확인할 수 있습니다.
4. 롬복 주의 사항
4.1@AllArgsConstructor, @RequiredArgsConstructor
타입을 필드 선언 순서를 나중에 바꿀 경우 문제가 발생 소지가 있기 때문에 해당 어노테이션 사용은 지양하고, 필요한 Field로 Constructor 를 직접 만들어야합니다.
@AllArgsConstructor
public class UserProfile {
private int userSeq;
private String userName;
private String email;
private String job;
}
UserProfile u = new UserProfile(1, "John", "lombok@study.com", "developer");
4.2 @EqualsAndHashCode
항상 @EqualsAndHashCode(of={“필드명”}) 형태로 동등성 비교에 필요한 필드를 명시
4.3 @Data
- @RequiredArgsConstructor @EqualsAndHashCode 를 조합한 애너테이션이기 때문에 각 애너테이션의 주의사항이 포함된다.
- @AllArgsConstructor 를 같이 적용시키면 @RequiredArgsConstructor 는 적용되지 않는다.
REFERENCE
https://goddaehee.tistory.com/95
https://hyoj.github.io/blog/java/basic/lombok/#allargsconstructor-requiredargsconstructor
'Spring Framework' 카테고리의 다른 글
[Spring Framework] 인터셉터 설정 (0) | 2019.11.18 |
---|---|
[Spring Framework] @RequestBody, @ResponseBody (0) | 2019.11.12 |
[Spring Framework] xss filter (0) | 2019.10.25 |
[Spring Framework] Filter, Interceptor, AOP 차이 및 정리 (0) | 2019.10.25 |
[Spring Framework] 부트 스트랩 적용하기 (0) | 2019.10.22 |