
내일배움캠프 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(exclude = " 예시임 ") 형식의 어노테이션을 클래스에 붙인다.
(아직 안 써봐서 어떻게 쓰는지 감이 안잡힘...)
일단은 toString()를 자동으로 생성하는 것과 비슷하다고는 한다.
- @EqualsAndHashCode
자바 빈을 만들 때 자주 오버라이딩 하는 equals()와 hashCode()를 자동 생성해준다.
@EqualsAndHashCode(callSuper = true)
public class User extends Domain {
private String username;
private String password;
}
callSuper 속성을 통해 equals와 hashCode 메소드 자동 생성 시 부모 클래스의 필드까지 감안할지 안 할지에 대해서 설정할 수 있다.
즉, callSuper = true로 설정하면 부모 클래스 필드 값들도 동일한지 체크하며, callSuper = false로 설정(기본값)하면 자신 클래스의 필드 값들만 고려한다.
- @Data
위에 적었던 어노테이션을 한번에 설정해줄 수 있는 유용한 어노테이션이다.
내일은 DTO, jackson 라이브러리에서 사용하는 어노테이션을 정리하겠다.