Web/Spring

[Spring] 스프링 부트 롬복 관련 어노테이션

poopooreum 2024. 9. 2. 02:17
반응형

✏️ 접근자/ 설정자 자동 생성

@Getter

  • 어떤 필드를 만들면 그 필드에 대한 getter()를 자동으로 생성
  • 필드에 선언하면 필드 단위로, 클래스에 선언하면 클래스 단위로 getter()를 생성

@Getter

  • 어떤 필드를 만들면 그 필드에 대한 setter()를 자동으로 생성
  • 필드에 선언하면 필드 단위로, 클래스에 선언하면 클래스 단위로 setter()를 생성

✏️ 생성자 자동 생성

@NoArgsConstructor

  • 파라미터가 없는 기본 생성자를 만들어준다

@AllArgsConstructor

  • 모든 필드 값을 파라미터로 받는 생성자를 만들어준다

@RequiredArgsConstructor

  • final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어준다

✏️ ToString 메소드 자동 새성

@ToString

  • toString() 메소드를 자동으로 생성해준다.
  • (exlucde = “필드명”)을 통해 toString() 결과에서 제외시킬 수 있다

✏️ equals, hashCode 자동 생성

@EqualsAndHashCode

  • 자바 빈을 만들 때 equals와 hashCode 메소드를 자주 오버라이딩 한다
  • callSuper 속성을 통해 equals와 hashCode 메소드 자동 생성 시 부모 클래스의 필드까지 감안할지 안할지에 대해 설정 할 수 있음
  • callSuper = true로 설정하면 부모 클래스 필드 값들도 동일한지 체크, callSuper = false로 설정하면 자신 클래스의 필드 값만 고려
@EqualsAndHashCode(callSuper = true)
public class User extends Domain {
  private String username;
  private String password;
}

User user1 = new User();
user1.setId(1L);
user1.setUsername("user");
user1.setPassword("pass");

User user2 = new User();
user1.setId(2L); // 부모 클래스의 필드가 다름
user2.setUsername("user");
user2.setPassword("pass");

user1.equals(user2);
// callSuper = true 이면 false, callSuper = false 이면 true

✏️ 통합 기능

@Data

  • Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정해주는 매우 유용한 어노테이션

@Value

  • @Data의 변형된 기능
  • 모든 필드를 private final로 설정, 클래스를 final로 설정, setter를 생성하지 않는다

✏️ 빌더 패턴

@Builder

  • 메소드 체이닝을 이용하는 static 메소드 builder()를 생성한다.
  • access : builder()의 접근 제어자 설정(AccessLevel)
  • builderClassName : builder의 클래스 이름을 명시적으로 설정
  • builderMethodName : builder()의 메소드 이름을 명시적으로 변경
  • buildMethodName : build()의 메소드 이름을 명시적으로 변경
  • toBuilder : 인스턴스의 현재 값을 가지고 시작하는 builder를 생성
  • setterPrefix : Setter 메소드의 이름 앞에 해당 문자열을 붙인다.

✏️ 그 외

@NonNull

  • null-check 로직을 자동으로 생성하여 null 값이 넘어온 경우 NullPointerException 발생
  • 기본 생성자 대신 해당 필드를 포함한 생성자가 추가됨

@Log, @CommonsLog, @Log4j2, @Slf4j

  • 로그 프레임워크를 log라는 이름의 private static final 필드로 생성
반응형