관리 메뉴

ballqs 님의 블로그

[Spring] Lombok이란? 본문

코딩 공부/Spring

[Spring] Lombok이란?

ballqs 2024. 8. 9. 21:34

 Lombok이란?

Java의 라이브러리로 Spring에서 사용되는 온갖 Entity 및 Dto(Data Transfer Object)에 사용하며 반복되는 메소드를 Annotation를 사용하여 자동으로 작성해주는 라이브러리이다. 자동으로 작성되는 것은 Getter , Setter , toString , Constructor 정도로 간략하게 알고있다.

 

추가 방법 2가지

1.프로젝트 생성시 의존성 주입

 

2.build.gradle 에 추가하는 방법

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

 

 

Memo 클래스

public class Memo {
    private Long id;
    private String username;
    private String contents;
}

 

 

@Getter

// 컴파일되어서 생성된 코드
@Generated
public Long getId() {
    return this.id;
}

@Generated
public String getUsername() {
    return this.username;
}

@Generated
public String getContents() {
    return this.contents;
}

 

 

@Setter  ※사용안함

//컴파일되어서 생성된 코드
@Generated
public void setId(final Long id) {
    this.id = id;
}

@Generated
public void setUsername(final String username) {
    this.username = username;
}

@Generated
public void setContents(final String contents) {
    this.contents = contents;
}

 

@NoArgsContructor

매개변수 없는 생성자를 자동으로 생성해준다.

// 컴파일시 자동으로 생성된 코드
@Generated
public Memo() {
}

 

 

@AllArgsContructor  ※사용안함

해당 객체가 가지고 있는 모든 멤버변수를 담은 생성자를 자동으로 생성해준다.

// 컴파일시 자동으로 생성된 코드
@Generated
public Memo(Long id , String username , String contents) {
    this.id = id;
    this.username = username;
    this.contents = contents;
}

 

 

@RequiredArgsContructor

해당 객체가 가지고 있는 final 이 붙은 멤버변수만 담은 생성자를 자동으로 생성해준다.

그렇기에 주어진 위의 Memo 클래스엔 final이 붙은 변수가 없기에 자동으로 생성안해줌!

 

★생성자 관련 annotation 의 access = AccessLevel에 대해

 

  • access: 생성자의 접근 제어자를 설정하는 데 사용
  • AccessLevel: 생성자의 접근 제어 수준을 지정하는 열거형
    • PUBLIC: 생성자가 public 접근 제어자를 가지도록 설정
    • PROTECTED: 생성자가 protected 접근 제어자를 가지도록 설정
    • PACKAGE: 생성자가 패키지 프라이빗 접근 제어자(기본 접근 제어자)를 가지도록 설정
    • PRIVATE: 생성자가 private 접근 제어자를 가지도록 설정

 

 

@ToString  ※사용안함

// 컴파일시 자동으로 생성된 코드
@Generated
public String toString() {
    return "Memo{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", contents='" + contents + '\'' +
            '}';
}

 

 

@Data

이 Annotation은 위에 설명한 모든 Annotation를 한꺼번에 설정해주는 어노테이션이다.

그런 만큼 사용안하는 것들까지 포함되어 설정되기에 잘 안쓰인다.

그런 만큼 혼자서 연습할때는 사용해도 되지만 협업때는 사용하지 말자!!


마무리

Spring 강의를 듣다가 lombok 이야기가 나왔는데 대충 알고 있는 부분이라 정리해보았다.

생각보다 더 많은 것들이 담겨 있었고 주로 사용하는 것과 사용해서는 안되는 것들을 색깔로 분리했다.

빨강색으로 표기한건 매우 중요한거니 자주 사용하자!