단서해
개발일지
단서해
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Project (5)
    • JAVA (2)
    • Server (11)
      • Info (4)
      • 작동 원리 예상 (4)
      • Question (1)
      • JPA (1)
    • Infra (2)
    • Trouble Shooting (8)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

공지사항

인기 글

태그

  • REQUIRES_NEW
  • pinpoint
  • Spring
  • CodeDeploy
  • Intellij
  • 동시성
  • Fileter
  • 분산락
  • Github Actions
  • Reflection
  • docker
  • 무중단 배포
  • @configuration
  • 성능 개선
  • flutter
  • yml
  • JPA
  • 파일 경로
  • 비동기
  • Java
  • gradlew
  • @Component scan
  • gradle
  • OAuth2.0
  • gradle-wrapper.properties
  • thymeleaf
  • Lettuce
  • enhanced for
  • 트랜잭션
  • error

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
단서해

개발일지

Server/Info

[Lombok] @Builder 로 객체 생성시, 초기화 안해준 필드 null 값으로 세팅

2022. 11. 16. 23:03

Lombok의 @Builder 로 객체를 생성하는 경우가 종종 있을 것이다.

원하는 필드에만 값을 세팅할 수 있고, 파라미터의 순서를 고려하지 않아도 되기 때문에 상당히 편하다.

하지만 원하는 필드에만 값을 세팅할 시에, 값을 세팅하지 않은 필드에는 null 값이 들어가는 문제가 생긴다.

default로 별다른 값을 설정을 하지 않았을 때는 문제가 되지 않지만, 기본 값 설정을 한 경우에는 default 값에 null 값이 덮어씌어지게 된다. 만약 이후에 해당 필드의 메서드를 호출하는 경우가 있다면 NullPointerException 이 발생할 것이다.

이를 방지하기 위한 방법으로 필드에 'final' 을 설정하면 된다. 이에 따라 초기 설정값을 보존할 수 있다.

fianl 설정 x
final 설정

 

 

 

참조 - https://velog.io/@nawhew/%EB%A1%AC%EB%B3%B5-Builder-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%9E%90%EB%B0%94-%EC%BB%AC%EB%A0%89%EC%85%98%EC%97%90-null%EC%9D%B4-%EC%84%B8%ED%8C%85%EB%90%98%EB%8A%94-%EA%B2%BD%EC%9A%B0

 

롬복 @Builder 사용시 자바 컬렉션에 null이 세팅되는 경우

DTO를 받아 Builder를 통해 Entity로 변환하는 과정에서 컬렉션들이 null로 세팅되는 것을 발견하였다.대부분의 경우 컬렉션에 명시적초기화와 함께 final을 붙여주었지만, 이번엔 그렇지 않은 경우였

velog.io

저작자표시 (새창열림)

'Server > Info' 카테고리의 다른 글

Custom Advisor 에 @Transactional 설정시 미적용 문제  (0) 2023.03.20
[Spring] Component Scan 범위  (0) 2022.07.29
[Spring] @Configuration 을 설정해줘야 하는 이유.  (0) 2022.07.29
    'Server/Info' 카테고리의 다른 글
    • Custom Advisor 에 @Transactional 설정시 미적용 문제
    • [Spring] Component Scan 범위
    • [Spring] @Configuration 을 설정해줘야 하는 이유.
    단서해
    단서해

    티스토리툴바