Spring/Spring 공부
Lombok 정의와 어노테이션 기능 정리
개발자잡
2024. 10. 30. 19:35
Lombok은 자바의 보일러플레이트 코드를 줄이기 위해 사용하는 라이브러리로, 어노테이션을 통해 getter/setter, equals, hashCode 등 반복적인 메서드를 자동으로 생성해줍니다. 각 어노테이션은 다음과 같은 목적을 가지고 있습니다.
1. @Getter와 @Setter
- 목적: 클래스의 필드에 대한 getter와 setter 메서드를 자동 생성.
- 사용법: 필드에만 적용하면 해당 필드에만 적용되고, 클래스에 적용하면 모든 필드에 적용됩니다.
2. @ToString
- 목적: toString() 메서드를 자동 생성하여 클래스의 필드 정보를 문자열로 출력.
- 사용법: 클래스에 적용하며, exclude 옵션으로 특정 필드를 제외할 수도 있습니다.
3. @EqualsAndHashCode
- 목적: equals()와 hashCode() 메서드를 자동 생성하여 객체 비교 및 해시 코드를 효율적으로 생성.
- 사용법: 클래스에 적용하며, 특정 필드를 제외하거나 부모의 필드를 포함할지 설정할 수 있습니다.
4. @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
- 목적: 생성자를 자동 생성.
- @NoArgsConstructor: 기본 생성자를 생성.
- @RequiredArgsConstructor: final이나 @NonNull 필드만 포함하는 생성자를 생성.
- @AllArgsConstructor: 모든 필드를 포함하는 생성자를 생성.
5. @Data
- 목적: @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 모두 포함.
- 사용법: POJO 클래스를 작성할 때 사용하면 편리.
6. @Builder
- 목적: 빌더 패턴을 쉽게 구현하여 객체를 생성할 때 가독성을 높임.
- 사용법: 클래스나 메서드에 적용 가능하며, 메서드에 적용하면 해당 메서드의 결과물을 빌더로 반환.
7. @Value
- 목적: 불변 객체를 쉽게 생성.
- 사용법: 모든 필드를 private final로 생성하고 getter를 포함하며, setter는 생략된 객체를 생성합니다. @Data와 유사하지만 수정 불가능한 클래스를 만들 때 사용.
8. @Synchronized
- 목적: 메서드를 synchronized로 만들어 동기화 처리.
- 사용법: 메서드에 적용하며, 해당 메서드가 다중 쓰레드 환경에서 안전하게 실행될 수 있도록 합니다.
9. @Cleanup
- 목적: 리소스 자동 정리.
- 사용법: try-with-resources와 유사하게 사용하여 리소스 사용 후 자동으로 close() 메서드를 호출.
Lombok은 특히 코드 가독성을 높이고, 실수를 줄이면서 더 간결하게 코드를 작성할 수 있도록 도와줍니다.