Lombok(롬복) 이란?
- Java에서 Model Object를 만들때, 멤버필드(프로퍼티)에 대해 Getter/Setter, toString과 멤버필드에 주입하는 생성자를 만드는 코드 등 불필요하게 반복적으로 만드는 코드를 어노테이션을 통해 줄여주는 라이브러리 프로젝트이다.
- 생성자 자동 생성
- @NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성해준다
- @AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 생성해준다
- @RequiredArgsConstructor 어노테이션은 final 이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성해준다.
- ToString 메소드 자동 생성
- @ToString 어노테이션만 클래스에 붙여주면 자동으로 생성.
- exclude 속성을 사용하면, 특정 필드를 toString() 결과에서 제외시킬 수 있다.
- Builder Pattern 자동 생성
- 모델 객체를 생성할 때 Builder를 자동으로 추가해주는 어노테이션이다.
- 1.1.16 버전 이상 사용시 @Builder.Default라는 어노테이션을 사용하여 기본값을 적용 할 수 있다.
- @Data
- @Data는 위에서 설명한 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EnableAndHashCodef를 한꺼번에 설정해주는 가장 많이 사용되는 어노테이션이다.
- 클래스 레벨에서 @Data 어노테이션을 붙여주면 모든 필드를 대상으로 접근자와 생성자가 자동으로 생성되고, final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toString, equals, hashCode 메소드가 자동으로 만들어 진다.
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
@NonNull
private String username;
@NonNull
private String password;
private int[] scores;
}
User user1 = new User();
User user2 = new User("dale", "1234");
User user3 = new User(1L, "dale", "1234", null);
import lombok.*;
// @Data로 사용 가능
@Getter
@Setter
@ToString
@EqualsAndHashCode
@Builder
public class LombokModel {
private @NonNull String name;
private @NonNull String age;
private @NonNull String address;
}
public class MainClass {
public static void main( Stirng[] args ) {
LombokModel lombokModel = new LombokModelBuilder()
.name("Park")
.address("seoul")
.age("34")
.build();
}
}
* Lombok Annotation 참고자료
- 공식 홈페이지 : https://projectlombok.org/index.html
- Reference Doc : https://projectlombok.org/features/index.html
- 플러그인 안내 : https://plugins.jetbrains.com/androidstudio/plugin/6317-lombok-plugin
- 튜토리얼 : http://jnb.ociweb.com/jnb/jnbJan2010.html
'Java' 카테고리의 다른 글
[Java] Optional (0) | 2020.11.15 |
---|---|
[Java] CPU 점유율이 높은 스레드 상태 분석(Thread dump) (0) | 2020.11.10 |
[Java] PriorityBlockingQueue (0) | 2020.10.05 |
[Java] Generics(제네릭) (0) | 2020.09.29 |
[Java] Heap Memory Dump Analysis (0) | 2020.09.26 |