[SPRING:이론] 14 : Lombok

김승수·2024년 6월 10일
0

SPRING

목록 보기
14/27

⏰ 2024. 06. 10 월

✔ 스프링 이론 강의를 듣고 정리하면서 작성했습니다.

💡 목차

  1. Lombok 이란?
  2. 장단점
  3. 메서드 종류

Lombok

Lombok 이란?

  • 어노테이션(@) 기반 자바 언어를 자동완성 해주는 라이브러리이다.
  • 주로 반복적인 코드를 줄이고 개발자의 생산성을 향상시키는 데 사용된다.
  • Getter, Setter, Equals 및 HashCode 메서드를 자동으로 생성하기 때문에 Lombok을 사용하면 이러한 메서드를 직접 작성할 필요 없어 클래스를 더 간결하게 유지할 수 있다.
  • 롬복은 Maven이나 Gradle과 같은 의존성 관리 도구를 통해 프로젝트에 간단히 추가할 수 있다.

Lombok의 장단점

장점

  1. 코드의 간결성: Lombok을 사용하면 Getter, Setter, Equals, HashCode 등과 같은 반복적이고 번거로운 작업을 자동화하여 코드를 훨씬 간결하게 작성할 수 있다.

  2. 생산성 향상: Lombok은 반복적이고 일상적인 작업을 자동화하여 개발자가 보다 중요한 로직에 집중할 수 있도록 하기 때문에 개발 작업의 생산성을 향상시킨다.

  3. 유지보수 용이성: Lombok을 사용하면 코드 중복을 줄이고 읽기 쉽고 유지보수하기 쉽다.

단점

  1. IDE 의존성: Lombok은 IDE(통합 개발 환경)에 대한 의존성이 있어 Lombok을 사용하는 개발자는 이를 설치하고 구성해야 한다. 때로는 IDE 설정에 따라 Lombok이 원활하게 작동하지 않을 수도 있다.

  2. 코드 가독성 감소: Lombok을 남용하면 코드의 가독성이 감소할 수 있고, Lombok 어노테이션을 과도하게 사용하면 클래스나 메서드의 의도가 명확하지 않게 될 수 있다.

  3. 메타 프로그래밍 부작용: Lombok은 메타 프로그래밍 기술을 사용하여 코드를 생성하기 때문에 예상하지 못한 부작용을 일으킬 수 있다. 따라서 Lombok을 사용할 때에는 신중하고 꼭 필요한 부분에서 사용해야 한다.

💡 메서드 종류

  1. @Getter, @Setter
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @RequiredArgsConstructor
  5. @EqualsAndHashCode
  6. @ToString
  7. @Data
  8. @Builder
  9. @Log4j2

1. @Getter, @Setter

  • 가장 자주 활용하는 어노테이션이다.
  • @Getter@Setter를 클래스 이름 위에 적용시키면 모든 필드들에 적용이 가능하고, 개별 필드 이름 위에 적용시키면 해당 필드들만 적용 가능하다.

2. @AllArgsConstructor

  • 모든 필드를 초기화하는 생성자를 자동완성 시켜주는 어노테이션이다.

3. @NoArgsConstructor

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

4. @RequiredArgsConstructor

  • 특정 필드만을 초기화하는 생성자를 자동완성 시켜주는 어노테이션이다.
  • @NonNull 어노테이션을 붙인 필드와 final로 선언된 필드에 의존성을 주입한다.

5. @EqualsAndHashCode

  • 클래스에 대한 equals 메서드와 hashCode 메서드를 자동으로 생성한다.
  • 서로 다른 두 객체에서 특정 필드의 이름이 똑같은 경우 같은 객체로 판단을 하고 싶다면, @EqualsAndHashCode(of = {"a", "b"}) 로 설정하여 필드 ab가 동일하다면 같은 객체로 인식하도록 한다.
  • 상속 받고 있는 상위 클래스의 경우 적용시키지 않기 위해 속성으로 callSuper = false를 추가하면 된다.
  • EX)
@EqualsAndHashCode(of = {"a", "b"}, callSuper = false)

6. @ToString

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

7. @Data

  • @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동완성 시켜준다.
  • 일반적으로 @Data 어노테이션은 너무 무겁고 객체의 안정성을 지키기 어렵기 때문에 @Data의 사용을 지양한다.

8. @Builder

  • 해당 클래스에 객체의 생성에 Builder 패턴을 적용시켜준다.
  • 모든 필드들에 대해 build하기를 원한다면 클래스 위에 @Builder를 붙이면 되고, 특정 필드 만을 build하기 원한다면 생성자를 작성하고 그 위에 @Builder 어노테이션을 붙여주면 된다.

9. @Log4j2

  • 클래스에 @Log4j2를 적용하면 해당 클래스의 로그 클래스를 자동 완성 시켜준다.
  • 로그를 사용하고 싶은 위치에 log.log메서드();를 통해 로그를 작성할 수 있다.
  • EX)
log.error("Error");
profile
개발하는 미어캣

0개의 댓글