반응형
Intellij 사용자라면 Lombok plugin 설치와 Enable annotation processing 설정이 완료되어야 합니다.
1. Lombok(롬복)이란?
개발을 하면서 데이터를 담기 위해 객체를 만드는 VO/DTO/Domain 객체를 생성합니다.
생성한 객체를 효율적으로 사용하기 위해 getter/setter, toString, Builder를 만드는 과정이 매번 발생합니다.
이러한 객체들이 자주 사용하는 기능을 어노테이션으로 쉽게 설정할 수 있는 기능을 제공하는게 lombok입니다.
2. Lombok 의존성 추가 및 설정
2-1. 의존성 추가
https://projectlombok.org/setup/gradle
해당 사이트에 들어가면 gradle에서 설정하는 방법을 확인할 수 있습니다.
의존성을 추가한 후 gradle을 load gradle changes를 합니다.
(소스 오른쪽에 코끼리를 눌러주시면 됩니다.)
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.16'
annotationProcessor 'org.projectlombok:lombok:1.18.16'
testCompileOnly 'org.projectlombok:lombok:1.18.16'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.16'
}
2-2. 의존성 추가 확인
common 패키지와 CommonTest.java를 생성하여 의존성이 잘 적용되었는지 확인합니다.
private String text; 를 추가하고 @Builder를 추가하여 lombok이 적용되었는지 확인합니다.
3. Lombok 어노테이션 설명
어노테이션 | 설명 | 세부 설정 |
@Getter @Setter |
Getter 메서드 자동 생성 Setter 메서드 자동 생성 |
- lazy : 지연 호출로 동기화를 이용하여 1번만 호출 - AccessLevel : 접근 제한 레벨 설정 |
@ToString | ToString 메서드 자동 생성 | - callSuper : 상위 클래스 toString 호출 여부 - exclude : 출력하지 않을 필드명 입력 - includeFieldNames : 필드명 생략 여부 |
@Data | @ToString, @EqaulsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 자동생성 | |
@EqualsAndHashCode | equals, hashcode 메서드 자동생성 | - of : 포함할 필드 - exclude : 제외할 필드 |
@Val | class로 final 키워드 대신 사용하는 변수 | |
@NonNull | Null 일 경우 NullPointerException 발생 | |
@Cleanup | 자동 리소스 관리로 close() 메서드 관리 | |
@NoArgsConstructor | 인자 없는 생성자 생성 | |
@RequriedArgsConstructor | 필수 인자를 가지는 생성자 생성 | |
@AllArgsConstructor | 모든 인자를 가진 생성자 생성 | |
@Value | 불변 선언 | |
@Builder | Builder API 지원 | |
@SneakyThrows | Exception 발생시 체크된 Throable로 전달 | |
@Synchronized | 메서드 동기화 Lock 설정 | |
@Log | 로그를 설정 | - 기본 변수명 : Log이며 config 파일 설정 후 명칭 변경 가능 - 로그 종류 : @Log, @Slf4j, @CommonLog, Xslf4j, JBossLog 등 |
반응형
'개발(합니다) > Java&Spring' 카테고리의 다른 글
[spring boot 설정하기-3.1] Mybatis 설정 및 사용 방법 (0) | 2021.04.05 |
---|---|
[spring boot 설정하기-3] Mysql 설정 및 사용 방법 (0) | 2021.04.04 |
[spring boot 설정하기-1] spring boot intellij에서 구성하기 (2) | 2021.04.02 |
[java]java로 마우스 움직이기 (0) | 2021.03.30 |
[java-기초-19] NIO 기반 입출력 및 네트워킹 (0) | 2021.03.12 |