EEALL@ONCE

🔦LOMBOK 라이브러리 어노테이션 : @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder,@Data 본문

분류없음지식🔦

🔦LOMBOK 라이브러리 어노테이션 : @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder,@Data

올엣원스 2024. 1. 3. 16:15
728x90

Java에서 사용되는 Lombok 라이브러리의 어노테이션들인 @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder에 대해 설명하고 각각에 대한 예시를 들어볼게요. 이 어노테이션들은 코드를 더 간결하게 만들어 주어 매우 유용합니다.

@Getter

  • 이 어노테이션은 클래스의 각 필드에 대한 getter 메소드를 자동으로 생성합니다.
  • 예시:
@Getter
public class User {
    private String name;
    private int age;
}
//// 이 경우, User 클래스에는 자동으로 getName()과 getAge() 메소드가 생성됩니다.

@Setter

  • 이 어노테이션은 클래스의 각 필드에 대한 setter 메소드를 자동으로 생성합니다.
  • 예시:
@Setter
public class User {
    private String name;
    private int age;
}
// 이 경우, User 클래스에는 자동으로 setName(String name)과 setAge(int age) 메소드가 생성됩니다.

@NoArgsConstructor

  • 이 어노테이션은 인자가 없는 기본 생성자를 자동으로 생성합니다.
  • 예시:
@NoArgsConstructor
public class User {
    private String name;
    private int age;
}
// 이 경우, User 클래스에는 인자 없는 기본 생성자 User()가 자동으로 생성됩니다.

@AllArgsConstructor

  • 이 어노테이션은 모든 필드를 인자로 받는 생성자를 자동으로 생성합니다.
  • 예시:
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}
// 이 경우, User 클래스에는 모든 필드를 포함하는 생성자 User(String name, int age)가 자동으로 생성됩니다.

@Builder

  • 이 어노테이션은 빌더 패턴을 구현한 클래스를 자동으로 생성합니다. 빌더 패턴은 객체 생성을 더 유연하고 명확하게 만들어 줍니다.
  • 예시:
@Builder
public class User {
    private String name;
    private int age;
}
// 이 경우, User 클래스에는 빌더 패턴을 사용할 수 있는 UserBuilder 클래스가 자동으로 생성됩니다.
// 사용 예: User user = User.builder().name("John").age(30).build();

 

@Data

@Data 어노테이션을 사용하면, 다음과 같은 메소드들이 자동으로 클래스에 추가됩니다:

  1. Getter 메소드들: 클래스의 모든 필드에 대한 getter 메소드를 생성합니다.
  2. Setter 메소드들: 클래스의 모든 필드에 대한 setter 메소드를 생성합니다. 단, final 필드는 setter가 생성되지 않습니다.
  3. equals(Object other): 두 객체가 동등한지 비교하는 메소드를 생성합니다.
  4. hashCode(): 객체의 해시코드를 생성하는 메소드를 생성합니다.
  5. toString(): 객체를 문자열로 표현하는 메소드를 생성합니다. 이 메소드는 클래스의 필드 이름과 값을 포함한 문자열을 반환합니다.

예를 들어, 다음과 같은 클래스가 있다고 가정해 보겠습니다:

@Data
public class User {
    private String name;
    private int age;
}

이 경우, @Data 어노테이션은 User 클래스에 대해 getName(), setName(String name), getAge(), setAge(int age), equals(Object other), hashCode(), toString() 메소드들을 자동으로 생성해줍니다. 이렇게 함으로써, 개발자는 이러한 표준 메소드들을 수동으로 작성하는 시간과 노력을 절약할 수 있습니다.

@Data 어노테이션은 특히 데이터를 담는 객체(데이터 모델, DTO 등)에 유용하게 사용됩니다. 하지만, 모든 상황에 @Data를 사용하는 것이 좋은 것은 아닙니다. 예를 들어, 변경되지 않아야 하는 필드가 있는 경우에는 @Setter를 제한적으로 사용하는 것이 좋습니다. 또한, 복잡한 비즈니스 로직이 포함된 클래스에 @Data를 사용할 때는 주의가 필요합니다.

728x90