ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Lombok 개념 및 사용법
    Spring 2024. 4. 22. 23:49

    Lombok 이란?

    • 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다, Lombok을 이용하면 다양한 방면의 코드를 자동완성 시킬 수 있다.
    • Lombok을 사용하지 않으면 코드의 가독성이 떨어지는 단점이 있다.
    • Lombok을 사용하면 코드를 단순화시킬 수 있다.

    LomBok의 장점

    • 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
    • 반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
    • Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용 가능

    Lombok 기능 및 사용 예제

     

    [ @Getter @Setter ]

    • Lombok에서 가장 자주 활용하는 어노테이션이다.
    • 클래스 위에 적용하면 모든 변수들에 적용가능, 변수 위에 적용시키면 해당 변수들만 적용 가능.
    • getter와 setter 메서드를 자동으로 생성해 주는 기능을 제공한다.
    • getter을 통해 필드의 값을 읽고, setter을 통해 필드의 값을 설정 할 수 있다.

    [ @AllArgsConsturctor ]

    • 모든 변수를 사용하는 생성자를 자동완성 시켜주는 어노테이션이다.

    [ @NoArgsConstructor ]

    • 어떠한 변수도 사용하지 않는 기본 생성자를 자동완성 시켜주는 어노테이션 이다. 

    [ @RequiredArgsConstructor ]

    • 특정 변수만을 활용하는 생성자를 자동완성 시켜주는 어노테이션이다.
    • 생성자의 인자로 추가할 변수에 @NonNull 어노테이션을 붙여서 해당 변수를 생성자의 인자로 추가할 수 있다.
    • 아니면 해당 변수를 final로 선언해도 의존성을 주입받을 수 있다.

    [ @EqualsAndHashCode ]

    • 활용하면 클래스에 대한 equals 함수와 hasCode 함수를 자동으로 생성해준다.
    • 만약 서로 다른 두 객체에서 특정 변수의 이름이 똑같은 경우 같은 객체로 판단할 수 있다.
    • @EqualsAndHashCode(of = {"var1", "var2"})로 설정하여 var1과 var2가 동일하다면 같은 객체로 인식하도록 해주고 있다
    • Common를 상속하고 있는데, 상위 클래스의 경우 적용시키지 않기 위해 false로 설정해 줄 수 있다.

    [ @ToString ]

    • 활용하면 클래스의 변수들을 기반으로 ToString 메서드를 자동으로 완성시켜 준다.
    • 출력을 원하지 않는 변수에 @ToString. Exclude 어노테이션을 붙여주면 출력을 제외할 수 있다. 또한 상위 클래스에 대해도 toString을 적용시키고자 한다면 상위 클래스에 @ToString( = true)를 적용시켜 주면 된다.

    [ @Data ]

    • 활용하면 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동완성 시켜준다.
    • 객체의 안정성을 지키기 때문에 @Data의 활용을 지양한다.

    [ @Builder ]

    • 활용하면 해당 클래스의 객체의 생성에 Builder패턴을 적용시켜 준다.
    • 모든 변수들에 대해 build 하기를 원한다면 클래스 위에 @Builder를 붙이면 되지만, 특정변수만 원한다면 그 위에 붙여주면 된다.

    [ @Delegate ]

    • 한 객체의 메서드를 다른 객체로 위임시켜 준다.
    • 사용하는 함수들을 위임시켜서 코드를 편리하게 작성하도록 도와준다.

    [ @Log 관련 어노테이션 ]

    • Log4j2와 같은 어노테이션을 활용하면 해당 클래스의 로그 클래스를 자동 완성 시켜준다.

    Summary

     

    • Lombok? : 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다, 코드를 단순화시킨다.
    • Lombok의 장점 : 코드 자동 완성을 통한 생산성 향상, 코드 단순화를 통한 가독성과 유지보수성 향상. 다양한 방면으로 활용 가능
    • [ @Getter , @Setter ] : 가장 자주 쓰이는 어노테이션이다, getter와 setter 메서드를 자동으로 생성해 주는 기능을 제공한다,
      getter는 해당 필드의 값을 읽을 수 있고, setter는 해당 필드의 값을 설정할 수 있다.
kimjihoon