Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Java
- 자바스프링
- Spring
- 도메인
- partiql
- DynamoDB
- compositekey
- Springsecurity
- 개발
- markerinterface
- 오류
- MockMvc
- awscli
- 자바
- secondaryindex
- 로드밸런서
- query
- filterexpression
- EmbeddedId
- 스프링테스트
- IdClass
- 테스트코드
- testresttemplate
- 다이나모디비
- Route53
- annotation
- javaspring
- awscloud
- AWS
- 스프링
Archives
- Today
- Total
아장아장 개발 일기
Lombok Builder로 초기값 세팅하기 본문
리서치 동기
엔티티를 Builder 어노테이션을 통해 생성하는데, 한 필드의 기본값을 false로 설정할 필요가 있어 리서치 후 소스에 적용했다.
기존 다른 객체를 저장할때는 build를 사용하지 않았고, build를 사용하지 않는 경우에는 ColumnDefault 어노테이션을 통해 디폴트 값을 설정 할 수 있었다.
리서치 내용
builder로 생성하는 객체의 초기값 설정에는 크게 세가지 방법이 있다. 세가지 모두 고유의 단점이 있으므로, 필요에 맞게 선택 사용 해야한다.
1. @Builder.Default 어노테이션 사용
public class Test {
@Builder.Default
private Boolean isAvailable = false;
// 단점 : new Test()를 생성하면 isAvailable 초기값 설정이 되어있지만, Test.build()로 생성된 객체는 isAvailable 초기값이 설정되지 않음.
2. Builder 초기화
@Builder(builderClassName = "TestBuilder")
public class Test {
private Boolean isAvailable = false;
public static class TestBuilder {
private Boolean isAvailable = false;
}
// 단점 : 이중 초기화 + 클래스명을 바꿀경우 내부 클래스의 이름이 함께 자동으로 바뀌지 않음. 이로 인해 생기는 오류를 방지하기 위해 builderClassName 속성을 추가해줌.
3. toBuilder 사용
@Builder(toBuilder = true)
public class Test {
private Boolean isAvailable = false;
// 단점: 딱히 없는 것 같음. 참고한 Baeldung 웹페이지에는 Test 객체를 생성할때 Test test = new Test().toBuilder() 이런식으로 써줘야한다고 하는데, 직접 코드를 써보니 기존과 동일하게 Test test = Test.toBuilder()... 로 작성해도 문제없이 작동함.
'개발 > Spring' 카테고리의 다른 글
Jar 파일 PathNotFound 오류 해결 방법 (0) | 2022.10.21 |
---|---|
@Component VS @Service VS @Repository 어노테이션 차이 (0) | 2022.08.18 |
Spring Security ‘hasAnyAuthority()’ VS ‘hasAnyRole()’ (0) | 2022.04.21 |
Spring MockMvc 사용법 (0) | 2022.04.19 |
Spring MockMvc와 TestRestTemplate 비교 (0) | 2022.04.19 |
Comments