[회뜨는 참치]억대 연봉을 위한 인간수업
Published 2023. 4. 2. 15:01
롬복(Lombok) 이란? Develop/Java
반응형

Java를 공부하려고 코드를 보다 보면 @Override 처럼 @에 뭔가 쓰여 있는 걸 매우 자주 볼 수 있다.

@는 자바에서 사용하는 라이브러리며 롬복(Lombok)이라 한다.

 

 

롬복(Lombok)이란?

반복 메소드 작성 코드를 줄여주는 라이브러리!
그러니까 반복되는 코드를 줄여주는 역할로, 코드 다이어트 라이브러리라고 부른다.

 

 

롬복의 특징

  • 여러 가지 @어노테이션 제공
  • 컴파일 과정에서 자동으로 개발자가 원하는 메소드를 생성/주입 방식으로 동작하는 라이브러리
  • 이런 API를 사용하기 위해선 롬복 라이브러리 파일을 추가해줘야 한다.
  • 클래스 등에 반복되는 getter, setter, toString 등 메소드를 자동으로 만들어주는 기능

 

Lombok 롬복의 장점

  • 복잡하고 반복되는 코드를 자동 생성하도록 하여 생산성 향상 및 코드 축소를 할 수 있다.
  • 이로 인해 코드의 가독성 및 유지보수성을 높일 수 있다

Lombok 롬복의 단점

  • 코드 전체 내용이 눈에 직접 보이는 게 아니여서 직관성이 떨어질 수 있다.

 

 

어노테이션 종류

@Getter @Setter

  • 가장 많이 사용되는 어노테이션으로 자동으로 생성된 접근자와 설정자 사용이 가능

 

@ToString

  • toString() 메소드를 자동 생성함
  • exclude로 특정 필드를 toString() 결과에서 제외시킬 수 있음

 

@EqualsAndHashCode

  • equals와 hashCode 메소드 자동 생성

 

@Data

  • @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동 완성 시켜줌
  • 단, 실무에선 너무 무겁고 객체의 안정성을 위해 @Data의 활용을 지양함

 

@Data가 너무 무겁다는게 무슨 의미일까?
@Data가 무겁다는건 보통 ToString이 무겁다는 것을 의미한ㄷ. 너무 자세하게 나와서 문제인 것..
객체는 멤버를 가질 수 있는데, 그 멤버가 다른 맴버 클래스를 갖는다. 근데? 그 멤버가 원래 클래스를 다시 참조하게 되면서 순환 참조가 일어나는데, 순환 참조가 무한으로 발생해서 크래시가 난다. 그래서 toString 때문에 무거워지고 안정성이 떨어지는 것이다.

 

 

 

@Builder : 빌더 패턴 적용

  • @NorgsConstructor : 파라미터가 없는 기본 생성자를 만듬
  • @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어줌
  • @RequiredArgsConstructor : final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어줌
  • @EqualsAndHashCode : equals와 hashcode를 자동으로 생성해주는 어노테이션
반응형
profile

[회뜨는 참치]억대 연봉을 위한 인간수업

@회뜨는참치

이 글이 당신에게 조금이라도 도움이 된다면 좋겠습니다.