Lombok은 어노테이션 기반으로 클래스에 코드를 추가해주는 라이브러리입니다.
반복적으로 작성하는 코드의 양을 줄여주어 간결한 코드를 작성하는데 도움을 줍니다.
build.gradle
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok' // 테스트 코드에서 사용하려면 추가
testAnnotationProcessor 'org.projectlombok:lombok' // 테스트 코드에서 사용하려면 추가
plugin
file -> setting -> plugins
Annotation processing 활성화
Enable annotation processing
체크
@Getter
해당 필드들의 Getter 함수를 자동으로 생성해줍니다.
@Setter
해당 필드들의 Setter 함수를 자동으로 생성해줍니다.
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
: Entitiy 작성 시 많이 사용합니다.
기본 생성자를 자동으로 생성해줍니다.
@AllArgsConstructor
모든 필드가 들어가는 Constructor를 자동으로 생성해줍니다.
@RequiredArgsConstructor
final 필드가 들어가는 Constructor를 자동으로 생성해줍니다.
의존성을 주입받을때 많이 사용합니다.
@ToString
@ToString(of = {"id", "username", "age"})
: 다음과 같이 특정 필드만 출력할 수도 있습니다.
toString()을 자동으로 생성해줍니다.
양방향 매핑 관계의 경우 무한 순환 참조가 발생할 수 있으니 주의하셔야합니다.
@EqualsAndHashCode
equals(), hashCode() 메소드를 자동으로 생성해줍니다.
@Data
@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode를 자동으로 생성해줍니다.
김영한님은 Form이나 DTO에서 해당 어노테이션 사용을 추천하고 있습니다.
@Builder
빌더 패턴을 자동으로 생성해주는 기능을 제공합니다.
김영한님은 사용하지 않으셨지만 여러 깃헙 소스에서 많이 사용되는 것 같아 추가하였습니다.
주로 생성자에 어노테이션을 추가한 후 인스턴스를 생성할때 다음과 같은 방식으로 사용합니다.
Person person = Person.builder()
.firstName("John")
.lastName("Doe")
.age(30)
.address("123 Main Street")
.build();