웹(WEB)/spring-boot

Lombok에서 자주 사용되는 어노테이션

고품격미식가 2019. 10. 9. 18:15

Lombok 라이브러리에서 제공하는 어노테이션

@Getter 와 @Setter

public class User {

  @Getter
  @Setter
  private String name;
}

롬복에서 가장 많이 사용되는 어노테이션으로 위처럼 특정필드에 선언하면 자동으로 getName(), setName() 메소드를 생성해준다.

또한, 특정 필드가 아닌 클래스에 @Getter @Setter 을 선언해줄 경우, 모든 필드에 접근자와 설정자가 자동으로 생성된다.

 

@NoArgsConstructor 은 파라미터가 없는 기본 생성자를 생성해준다.

@AllArgsConstructor 은 모든 필드 값을 파라미터로 받는 생성자를 생성해준다.

@RequiredArgsConstructor 은 final 이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 생성해준다.

 

@ToString 은 toString() 메소드를 자동으로 생성해준다. exclude 속성을 사용하면, 특정 필드를 생성에서 제외시킬수 있다.

@ToString(exclude = "password")
public class User {

	private String name;
	private String id;
	private String password;
}

 

@EqualsAndHashCode 은 equals 와 hashCode 메소드를 자동으로 생성해준다.

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

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

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

 

@Data 는 위의 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 한꺼번에 설정해주는 어노테이션이다.

@Data
public class User {
	private name;
	private id;
	private password;
}

클래스에 @Data 어노테이션을 입력하면 모든 필드를 대상으로 getter, setter가 자동으로 생성되고, final 또는 @NonNull 필드값을 파라미터로 받는 생성자가 생성되며, toString, equals, hashCode 메소드가 생성된다.

 

@Builder