사용자 도구

사이트 도구


java:lombok:builder

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
java:lombok:builder [2022/01/28 17:20]
kwon37xi 만듦
java:lombok:builder [2022/01/28 17:29] (현재)
kwon37xi
줄 1: 줄 1:
 ====== lombok @Builder ====== ====== lombok @Builder ======
   * [[https://projectlombok.org/features/Builder|@Builder]]   * [[https://projectlombok.org/features/Builder|@Builder]]
-  * see [[java:lombok:pitfall|Lombok 사용상 주의점(Pitfall)]] 
  
 ===== 주의점 ===== ===== 주의점 =====
 +  * see [[java:lombok:pitfall|Lombok 사용상 주의점(Pitfall)]]
   * 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다.   * 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다.
  
-==== 참조 ====+===== 기본값 ===== 
 +  * 지정하지 않으면 ''null'', ''0'', ''false'' 가 기본이다. 
 +  * ''@Builder.Default'' 를 필드에 붙여 기본값을 지정할 수 있는데, 사용하지 않기를 권함. 이 경우는 class에 붙일때만 작동할 것으로 보임. 
 +  * 생성자나 메소드에서 명시적으로 기본값을 지정할 것. 
 + 
 +===== @Singluar ===== 
 +  * 원칙적으로 ''setter'' 기반으로 builder가 만들어지는데 Java Collections와 [[java:guava|Guava]] Collections 에 대해서 ''@Singluar'' 어노테이션을 주면 값을 한개씩 혹은 여러개를 추가하는 build method와 전체 clear 메소드를 만들어줌. 
 +<code java> 
 +@Singular("axis") List<Line> axes; 
 + 
 +// axis(Line line) 메소드가 생김 
 +</code> 
 +===== final 혹은 수정 불가 클래스에 대한 builder ===== 
 +  * 수정할 수 없는 클래스가 있을 때 이에 대한 builder 를 별도 클래스에서 메소드로 빼서 만들 수 있다. 
 + 
 +<code java> 
 +// 소스 제어권이 없는 클래스 
 +@Value 
 +final class ImmutableClient { 
 +    private int id; 
 +    private String name; 
 +
 + 
 +// 별도의 빌드 전용 클래스와 메소드 
 +class ClientBuilder { 
 + 
 +    @Builder(builderMethodName = "builder"
 +    public static ImmutableClient newClient(int id, String name) { 
 +        return new ImmutableClient(id, name); 
 +    } 
 +
 + 
 +ImmutableClient testImmutableClient = ClientBuilder.builder() 
 +  .name("foo"
 +  .id(1) 
 +  .build(); 
 +assertThat(testImmutableClient.getName()) 
 +  .isEqualTo("foo"); 
 +assertThat(testImmutableClient.getId()) 
 +  .isEqualTo(1); 
 + 
 +</code> 
 + 
 + 
 +===== 참조 =====
   * [[https://www.baeldung.com/lombok-builder|Using Lombok's @Builder Annotation | Baeldung]]   * [[https://www.baeldung.com/lombok-builder|Using Lombok's @Builder Annotation | Baeldung]]
  
  
  
java/lombok/builder.1643358043.txt.gz · 마지막으로 수정됨: 2022/01/28 17:20 저자 kwon37xi