728x90
반응형
▶ @Data
@Data 어노테이션은 @Getter / @Setter, @ToString, @EqualAndHashCode와 @RequiredArgsConstructor를 모두 다 합쳐놓은 큰 범주의 세트라고 할 수 있다.
POJO(Plain Olde Java Objects)와 bean과 관련된 모든 보일러플레이트(boilerplate = 재사용 가능한 코드)를 생성한다.
class의 모든 필드에 대한 getter, setter, toString, equals와 같은 함수들 말이다.
// Lombok annotation 사용
@Data
public class Member {
private String name;
private double score;
}
// Lombok annotation 미사용
public class Member2 {
private String name;
private double score;
public Member2(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Member2{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Member2 member2 = (Member2) o;
return Double.compare(member2.score, score) == 0 && Objects.equals(name, member2.name);
}
@Override
public int hashCode() {
return Objects.hash(name, score);
}
}
@Data 어노테이션은 callSuper, includeFieldName, exclude와 같은 파라미터와 같이 사용될 수 없으므로, 해당 파라미터 사용이 필요할 때는 개별 어노테이션을 따로 명시해주어야한다.
@Getter
@Setter
@ToString(includeFieldNames=true)
@EqualsAndHashCode
@RequiredArgsConstructor
public class Ex{
private String name;
private double score;
}
728x90
반응형
'Spring > Lombok' 카테고리의 다른 글
빈 등록 어노테이션 @Bean @Configuration @Component (0) | 2022.05.15 |
---|---|
@PostConstruct @PreDestroy (0) | 2022.05.08 |
@RestController @Requestbody @Responsebody (0) | 2022.05.03 |
@Transactional (0) | 2022.04.29 |
BaseTimeEntity - @MappedSuperclass @EntityListeners(AuditingEntityListener.class) (0) | 2022.04.29 |