728x90
본 글은 @Builder 어노테이션의 acces 옵션에 대해서 공부한 지식을 정리한 글입니다.
@Builder는 롬복(Lombok) 라이브러리의 어노테이션으로, 빌더 패턴을 자동으로 생성해 주어 복잡한 객체 생성 로직을 간편하게 만들어 줍니다.
@Builder 어노테이션에 대한 설명은 아래의 포스팅에서 확인가능합니다.▼
@Builder 옵션
@Builder 어노테이션에는 여러 가지 옵션이 있으며, 이를 통해 빌더 패턴의 동작을 조정할 수 있습니다.
- builderClassName
- 설명: 생성할 빌더 클래스의 이름을 지정합니다.
- 예시: @Builder(builderClassName = "MyBuilder")
- builderMethodName
- 설명: 생성할 빌더 메서드의 이름을 지정합니다. 기본값은 builder입니다.
- 예시: @Builder(builderMethodName = "create")
- toBuilder
- 설명: 이미 생성된 객체를 기반으로 새로운 빌더를 생성할 수 있게 합니다. 기본값은 false입니다.
- 예시: @Builder(toBuilder = true)
- access
- 설명: 빌더 클래스의 접근 수준을 지정합니다.
- AccessLevel.PUBLIC, AccessLevel.PROTECTED, AccessLevel.DEFAULT, AccessLevel.PRIVATE 중 하나를 선택할 수 있습니다.
- 예시: @Builder(access = AccessLevel.PRIVATE)
- 설명: 빌더 클래스의 접근 수준을 지정합니다.
@Builder(access=AccessLevel.PRIVATE) 옵션 사용 이유
@Builder 어노테이션에서 access=AccessLevel.PRIVATE를 사용하는 이유는 주로 객체 생성의 제어를 강화하기 위함입니다.
구체적인 이유는 다음과 같습니다.
제어된 객체 생성
- @Builder(access=AccessLevel.PRIVATE)를 사용하면, 빌더 패턴을 통해서만 객체를 생성할 수 있습니다.
- 즉, 클래스 외부에서
직접 생성자를 호출할 수 없으므로, 객체 생성에 대한 통제력을 높일 수 있습니다.
- 즉, 클래스 외부에서
불변성 유지
- 빌더 패턴을 사용하면, 객체의 필드들을 설정한 후에 생성할 수 있으므로 불변성을 유지하기 쉬워집니다.
- @Builder(access=AccessLevel.PRIVATE)를 설정하면, 객체를 안전하게 생성하고, 클래스의 불변성을 보장하는 데 도움이 됩니다.
숨겨진 구현
- 빌더 클래스를 private으로 설정하면, 빌더 클래스와 관련된 세부 구현이
외부에 노출되지 않게 됩니다. - 이는 구현의 세부 사항을 숨기고, API 사용자에게 내부 구조에 대한 걱정을 덜어줄 수 있습니다.
유지보수성
- 클래스 외부에서 객체를 직접 생성할 수 없기 때문에, 객체 생성 방식이 일관되게 유지됩니다.
- 나중에 클래스의 생성 로직이 변경되더라도, 빌더 패턴을 사용하여 객체를 생성하면 클래스 내부의 변경 사항에 따라 자동으로 업데이트됩니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.15 - CI/CD란 무엇일까❓ (0) | 2024.08.15 |
---|---|
[TIL, 일일 회고] 2024.08.14 - final 파라미터의 장점 (0) | 2024.08.14 |
[TIL, 일일 회고] 2024-08.11 - 캐싱 전략 (0) | 2024.08.12 |
[TIL, 일일 회고] 2024.08.11 - MapStruct의 편리함 (0) | 2024.08.11 |
[TIL, 일일회고] 2024.08.10 - DTO 사용 시 고려해야 할 주요 문제점과 해결책 (0) | 2024.08.10 |