EEALL@ONCE
🔦LOMBOK 라이브러리 어노테이션 : @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder,@Data 본문
분류없음지식🔦
🔦LOMBOK 라이브러리 어노테이션 : @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder,@Data
올엣원스 2024. 1. 3. 16:15728x90
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 어노테이션을 사용하면, 다음과 같은 메소드들이 자동으로 클래스에 추가됩니다:
- Getter 메소드들: 클래스의 모든 필드에 대한 getter 메소드를 생성합니다.
- Setter 메소드들: 클래스의 모든 필드에 대한 setter 메소드를 생성합니다. 단, final 필드는 setter가 생성되지 않습니다.
- equals(Object other): 두 객체가 동등한지 비교하는 메소드를 생성합니다.
- hashCode(): 객체의 해시코드를 생성하는 메소드를 생성합니다.
- 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
'분류없음지식🔦' 카테고리의 다른 글
🔦 가상머신이 뭘까? (1) | 2024.01.04 |
---|---|
🔦스레드(Thread)가 뭔데? (0) | 2024.01.03 |
🔦 해싱(Hashing)과 해시(Hash) (0) | 2024.01.03 |
🔦 네트워크 주소와 호스트 주소 차이가 뭐야? (1) | 2024.01.02 |
🔦 TCP/IP 4계층 모델 과 OSI 7계층 모델의 차이에 대한 귀동냥(Feat.애완개발자) (0) | 2023.12.29 |