본문 바로가기

JAVA - Backend/Plugins

Lombok

참고
https://www.daleseo.com/lombok-popular-annotations/

 

[자바] 자주 사용되는 Lombok 어노테이션

Lombok 라이브러리에서 제공하는 어노테이션 중에서 자주 사용되는 어노테이션 위주로 살펴보도록 하겠습니다. 접근자/설정자 자동 생성제일 먼저 살펴볼 어노테이션은 @Getter와 @Setter 입니다.아마 Lombok에서 가장 많이 사용되는 어노테이션일 텐데요.예를 들어, xxx라는 필드에 선언하면 자동으로 getXxx()(boolean 타입인 경우, is

www.daleseo.com

그래들
// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

노가다성 코드 생성을 줄여준다.

@Getter, @Setter getter (boolean 타입의 경우 isXxx() ), setter 생성
@NoArgConstructor 파라메터가 없는 기본 생성자
@AllArgsConstructor 모든 필드값을 받는 생성자
@RequiredArgsConstructor final이나 @NonNull인 필드 값만 받는 생성자
@ToString(exclude = "제외필드") println(객체)
@EqualsAndHasCode(callSuper = true) equals, hadCode
@Data @Getter + @Setter + @RequriedArgsConstructor + @ToString + @EqualsAndHasCode
@NotNull Null값 허용불가
@Cleanup 자동으로 Close() 메소드 호출
@Value 불변(immutable) 클래스 생성
@Log, @Slf4j, @Log4j2 등 log변수에 log객체 생성하여 할당하여 로거 사용
@Builder 생성자에 빌더패턴사용 new ABC().setA(1).setB(2).build() 같은 체이닝 사용가능
@SneakyThrows 예외발생시 Throwable 타입으로 반환
@Synchronized 메소드에 동기화 설정
@Getter(lazy=true) 동기화를 이용해서 최초 한번만 getter호출
@Entity
@Table(name = "member")
@ToString(exclude = "coupons")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EqualsAndHashCode(of = {"id", "email"})
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(name = "email", nullable = false)
    private String email;
    @Column(name = "name", nullable = false)
    private String name;
    @CreationTimestamp
    @Column(name = "create_at", nullable = false, updatable = false)
    private LocalDateTime createAt;
    @UpdateTimestamp
    @Column(name = "update_at", nullable = false)
    private LocalDateTime updateAt;
    @OneToMany
    @JoinColumn(name = "coupon_id")
    private List<Coupon> coupons = new ArrayList<>();
    @Builder
    public Member(String email, String name) {
        this.email = email;
        this.name = name;
    }
}