@Data

진기·2024년 2월 9일

Springboot

목록 보기
9/9

📌@Data

@Data 어노테이션은 Lombok 라이브러리에서 제공하는 어노테이션이다.
@Data : @Getter, @Setter, @ToString, @ EqualsAndHashCode, @RequiredArgsConstructor 모두를 자동으로 적용해준다.
단, callSuper, includeFieldName, exclude 등은 지정할 수 없으므로, 해당 파라미터 사용이 필요할 때는 개별 어노테이션을 따로 다 명시해주면 된다.

Lombok 라이브러리의 어노테이션을 개별적으로 사용하여 지정해야 한다.
따라서 @Data는 어노테이션의 기본 설정 값을 사용할 때 사용해야 한다.

예시

@Data 사용한 경우

@Data
public class HelloData {
    private String username;
    private int age;
}

@Data 사용하지 않는 경우

@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
public class HelloData {
    private String username;
    private int age;
}

Lombok 라이브러리를 사용하지 않는 경우

public class HelloData {
    private String username;
    private int age;

    public HelloData(String username, int age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        HelloData helloData = (HelloData) o;
        return age == helloData.age && Objects.equals(username, helloData.username);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, age);
    }

    @Override
    public String toString() {
        return "HelloData{" +
                "username='" + username + '\'' +
                ", age=" + age +
                '}';
    }
}

위 세가지 코드는 다 같은 코드이다.

profile
개발 성장 이야기

0개의 댓글