twocowsong

@Data 본문

IT/SpringBoot

@Data

WsCode 2022. 1. 18. 21:36

@Data는 정말간편하다. Class의 Getter, Setter를 만드는데 @Data 한줄이면 이만큼 편리한게 없다. 허나 @Data도 모르고 막사용하면 원치않는경우에 잘못된 사용방법으로 문제가 될수있다.

@Data
public class Car {
	private String carName;
	private int speed;
	private int gear;
}

Car 클래스가 존재 할경우 @Data는 정말 많은것을 해준다.
컨트롤러, 서비스 등 다른곳에서 사용할경우 Getter, Setter, toString 정도를 사용할것으로 예상한다. 허나 @Data 그외에 많은것을 더 포함하고있다.


@Data 구성

@ToString
@Getter : 모든 필드
@Setter : 정적 필드가 아닌 모든 필드
@RequiredArgsConstructor : 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어준다.

@EqualsAndHashCode : equals, hashCode 자동 생성

  • equals : 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자
  • hashCode : 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자 (객체의 값이 같아도 주소가 다르면 다른객체로 판단함)

이렇게 @Data는 Getter, Setter 만이아니라 다른 어노테이션도 포함하고있음으로 사용할때 무차별적으로 @Data를 사용하기보다는 아래와같이 사용해주자.

@Getter
@Setter
public class Car {
	private String carName;
	private int speed;
	private int gear;
}

하지만 자신이 @Data를 잘알고있다면! @Data를 사용하셔도 무방합니다.

'IT > SpringBoot' 카테고리의 다른 글

@RestController @Controller  (0) 2022.01.24
@Scheduled  (0) 2022.01.23
Redirect, forward, RedirectAttributes  (0) 2022.01.23
@ModelAttribute, @PathVariable, @RequestBody  (0) 2022.01.18
@Value 어노테이션  (0) 2022.01.18