Lombok 라이브러리는 Getter/Setter, ToString과 같은 반복적인 자바 코드를 컴파일 할 때 자동으로 생성해주는 라이브러리 입니다.
Lombok 라이브러리는 설치하면 자동으로 사용할 수 있는 것은 아니고 IntelliJ나 Eclipse 내에서 사용 가능하도록 설정을 수정해주어야 합니다.
환경 정보
- IntelliJ IDEA 2024.1.6
- 맥북(M1)
Lombok 테스트
1. IntelliJ Settings > Plugins에서 Lombok 라이브러리가 설치되어 있는지 확인합니다. 설치가 안되어 있다면 설치를 진행해야 합니다.
2. Build, Execution, Deployment > Compiler > Annotation Processors 에서 "Enable annotation processing"을 checked 합니다.
3. 간단하게 Memo 클래스를 생성하고 gradle build 를 진행합니다.
package com.sparta.springprepare;
import lombok.Getter;
@Getter
public class Memo {
private String username;
private String contents;
}
4. gradle build가 성공적으로 진행됐다면(컴파일) 프로젝트 내 build > classes 하위에 존재하는 Memo 바이트코드 파일(.class)이 생성되고 자동으로 생성자와 Getter가 생성되어 있는 것을 확인해 볼 수 있습니다.
// Memo.class
package com.sparta.springprepare;
public class Memo {
private String username;
private String contents;
public Memo() {
}
public String getUsername() {
return this.username;
}
public String getContents() {
return this.contents;
}
}
5. @NoArgsConstructor 와 @AllArgsConstructor 어노테이션을 넣은 결과 값도 함께 살펴보겠습니다.
package com.sparta.springprepare;
import lombok.*;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
private String username;
private String contents;
}
// Memo.class
package com.sparta.springprepare;
public class Memo {
private String username;
private String contents;
public String getUsername() {
return this.username;
}
public String getContents() {
return this.contents;
}
public void setUsername(final String username) {
this.username = username;
}
public void setContents(final String contents) {
this.contents = contents;
}
public Memo(final String username, final String contents) {
this.username = username;
this.contents = contents;
}
public Memo() {
}
}
6. @RequiredArgsConstructor 은 final 필드를 인수로 받는 생성자를 만듭니다.
package com.sparta.springprepare;
import lombok.*;
@Getter
@Setter
@RequiredArgsConstructor
public class Memo {
private final String username;
private String contents;
}
// Memo.class
package com.sparta.springprepare;
public class Memo {
private final String username;
private String contents;
public String getUsername() {
return this.username;
}
public String getContents() {
return this.contents;
}
public void setContents(final String contents) {
this.contents = contents;
}
public Memo(final String username) {
this.username = username;
}
}
Lombok 라이브러리 annotation
어노테이션 | 설명 |
@Getter/Setter | 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메서드 생성 |
@ToString | toString() 메서드 생성 |
@ToString(exclude={"변수명"}) | 원하지 않는 속성을 제외한 toString() 메서드 생성 |
@NonNull | 해당 변수가 null 체크, NullPointerException 예외 발생 |
@EqualsAndHashCode | eqauls()와 hashCode() 메서드 생성 |
@Builder | Builder 패턴을 이용한 객체 생성 |
@NoArgsConstructor | 파라미터가 없는 기본 생성자 생성 |
@AllArgsConstructor | 모든 속성에 대한 생성자 생성 |
@RequiredArgsConstructor | 초기화되지 않은 Final, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성 |
@Log | log 변수 자동 생성 |
@Value | 불변(immutable) 클래스 생성 |
@Data | @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션 |
'Spring' 카테고리의 다른 글
[Spring] 3 Layer - Controller (0) | 2024.09.26 |
---|---|
[Spring] Spring MVC (0) | 2024.09.26 |
[Spring] 테스트 코드 (0) | 2024.09.25 |
[Spring] IntelliJ Spring 프로젝트 세팅 (1) | 2024.09.25 |
[Spring] SpringFramework 알아보기 (0) | 2024.07.30 |