Lombok의 @Builder 로 객체를 생성하는 경우가 종종 있을 것이다.
원하는 필드에만 값을 세팅할 수 있고, 파라미터의 순서를 고려하지 않아도 되기 때문에 상당히 편하다.
하지만 원하는 필드에만 값을 세팅할 시에, 값을 세팅하지 않은 필드에는 null 값이 들어가는 문제가 생긴다.
default로 별다른 값을 설정을 하지 않았을 때는 문제가 되지 않지만, 기본 값 설정을 한 경우에는 default 값에 null 값이 덮어씌어지게 된다. 만약 이후에 해당 필드의 메서드를 호출하는 경우가 있다면 NullPointerException 이 발생할 것이다.
이를 방지하기 위한 방법으로 필드에 'final' 을 설정하면 된다. 이에 따라 초기 설정값을 보존할 수 있다.
롬복 @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 |