내일배움캠프 17일차 TIL : Spring - lombok 어노테이션

김원기·2024년 5월 14일

TIL

목록 보기
21/42
post-thumbnail

내일배움캠프 17일차 TIL : Spring - lombok 어노테이션

Spring 강의를 들으면서 어노테이션을 정말 많이 봤다.
원래 @Override정도가 끝이었는데 말이지...

그래서 조금은 숙지하고 있어야 강의 듣는게 편할 거 같아서 이거 먼저 정리해보려 한다.

접근자 / 설정자

개인적으로 가장 많이 사용될 것 같은 어노테이션이다. 바로

  • @Getter
  • @Setter
@Getter
@Setter
public class className() {
	private String username;
    private String contents;
}

처럼 선언하면 code가 컴파일 시점에 Getter와 Setter 메서드를 생성한다.

생성자 관련

  • @NoArgsConstructor

파라미터가 없는 기본 생성자를 자동으로 생성한다.

  • @AllArgsConstructor

모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다.

  • @RequiredArgsConstructor

final, @NonNull인 필드 값만 파라미터로 받는 생성자를 자동 생성한다.

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class className {
  @NonNull
  private Integer id;
  @NonNull
  private String username;
  private String contents;
}
// NoArgsConstructor
className class1 = new className();

// AllArgsConstructor
className class2 = new className(1, "A");

// RequiredArgsConstructor
className class3 = new className(2, "B", "Spring annotation");

ToString

  • @ToString

@ToString(exclude = " 예시임 ") 형식의 어노테이션을 클래스에 붙인다.

(아직 안 써봐서 어떻게 쓰는지 감이 안잡힘...)
일단은 toString()를 자동으로 생성하는 것과 비슷하다고는 한다.

EqualsAndHashCode

  • @EqualsAndHashCode

자바 빈을 만들 때 자주 오버라이딩 하는 equals()와 hashCode()를 자동 생성해준다.

@EqualsAndHashCode(callSuper = true)
public class User extends Domain {
  private String username;
  private String password;
}

callSuper 속성을 통해 equals와 hashCode 메소드 자동 생성 시 부모 클래스의 필드까지 감안할지 안 할지에 대해서 설정할 수 있다.

즉, callSuper = true로 설정하면 부모 클래스 필드 값들도 동일한지 체크하며, callSuper = false로 설정(기본값)하면 자신 클래스의 필드 값들만 고려한다.

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

@Data

  • @Data

위에 적었던 어노테이션을 한번에 설정해줄 수 있는 유용한 어노테이션이다.

끝!

내일은 DTO, jackson 라이브러리에서 사용하는 어노테이션을 정리하겠다.

profile
혼자 공부하는 블로그라 부족함이 많아요 https://www.notion.so/18067a27ac7e4f4790dde645fb3bf3d3?pvs=4

0개의 댓글