@NoArgsConstructor와 @AllArgsConstructor은 생성자 코드를 더 간결하게 작성할 수 있는 강력한 도구입니다. 이 어노테이션들은 주요 필드들을 자동으로 초기화하거나, 특정 상황에서 기본 생성자를 자동으로 생성해주므로, 불필요한 반복 작업을 줄이고 코드 유지 보수성을 향상시킬 수 있습니다.
@NoArgsConstructor란?
@NoArgsConstructor는 클래스에 파라미터가 없는 기본 생성자를 자동으로 생성해줍니다. 이는 주로 JPA 엔티티 클래스와 같이 파라미터 없는 기본 생성자가 필요한 경우에 유용합니다.
일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access=AccessLevel.PROTECTED)와 같이 사용합니다. 무분별하게 생성되는 객체들을 한 번 더 체크해 줌으로써 의도하지 않은 엔티티 객체를 만드는 행위를 방지할 수 있습니다.
@AllArgsConstructor란?
@AllArgsConstructor는 Lombok 어노테이션 중 하나로, 클래스에 모든 필드를 초기화하는 생성자를 자동으로 생성해줍니다. 이는 생성자 코드를 간결하게 작성하며, 클래스의 모든 필드를 한 번에 초기화할 때 유용합니다.
@Builder, @NoArgsConstructor 그리고 푸른 수염의 @AllArgsConstructor
@NoArgsConstructor(access=AccessLevel.PROTECTED)와 @Builder를 같이 쓰면 오류가 발생합니다. . 당연함. 전체 생성자가 없기 때문입니다. 그래서 @AllArgsConstructor가 필요합니다. 이때 AccessLevel.PRIVATE로 설정하여 모든 필드를 외부에서 변경할 수 없도록 합니다. 이렇게 하면 객체를 생성한 후에는 필드의 값이 변경되지 않도록 보장할 수 있습니다.
참고
https://projectlombok.org/features/constructor
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
Spring | RESTful API - DTO를 Page로 반환하기 (0) | 2023.08.11 |
---|---|
Spring Security | Spring Security의 구조를 이해해보자! (0) | 2023.08.10 |
Java | Lombok의 @Builder와 @Builder.Default 알아보기 (0) | 2023.08.09 |
Java | 엔티티를 조회하는 가장 안전한 방법, Optional (0) | 2023.08.01 |
Querydsl | 동적 쿼리와 성능 최적화 조회 - Builder, Where절 파라미터 (0) | 2023.05.17 |