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 |
29 | 30 | 31 |
Tags
- string_agg()
- db
- 중복제거
- WordPress
- instance생성
- mybatis
- 리스트중복제거
- Java
- enumtype
- 지옥같은git
- 권한정책
- wordpress블로그
- AWS
- anymatch메서드
- Annotation
- port닫기
- 리스트중복값
- 3tierarchitecture
- route53
- ansible
- conponent
- listnull
- awsconsole
- PostgreSQL
- 널포인터에러
- Spring
- lightsail
- stereotypeannotation
- 열려있는포트
- enum
Archives
- Today
- Total
Anyway
[Spring] @Builder 패턴 사용하기 본문
[@Builder 패턴 사용하기]
개발을 다시 시작하면서 @Builder 어노테이션을 처음 써 봐 헷갈리는 부분이 있어 개념 정리를 했다. 😬
1. 생성자(Constructor)
- 역할 : 객체를 생성할 때 호출되며 필수적인 초기화 작업을 수행한다.
- 사용 방식 : 'new' 키워드를 사용하여 직접 호출한다.
- ex
DeptListResDto dto = new DeptListResDto();
2. Builder 패턴
- 역할 : 복잡한 객체를 생성할 때, 보다 유연하고 가독성 좋은 방법을 제공한다.
- 사용 방식: 'builder()' 메서드를 호출하여 빌더 객체를 생성하고, 필요한 필드를 설정한 후 'build()' 메서드를 호출하여 최종 객체를 생성한다.
- ex
DeptListResDto dto = DeptListResDto.builder()
.dept(deptVo)
.build();
차이
- 생성자는 객체 생성과 초기화를 한 번에 수행하며, 매개변수의 순서가 중요하다.
- 빌더 패턴은 객체를 생성하기 전에 필요한 필드들을 체이닝 방식으로 설정하며, 매개변수의 순서와 관계없이 가독성이 높아지고, 일부 필드만 설정할 수도 있다.
DeptListResDto.builder() 만으로 생성자가 될 수 있나? 싶었는데 객체를 생성하기 위한 빌더 객체를 반환하는 메서드로 생성자와는 다르며 객체를 생성하기 위한 과정 중의 첫 단계로 이해할 수 있겠다.
@builder 어노테이션
'@Builder'는 Lombok 라이브러리에서 제공하는 어노테이션으로 빌터 패턴을 쉽게 구현할 수 있도록 도와준다.
빌더 패턴은 복잡한 객체를 생성하는 방법 중 하나로 생성자나 팩토리 메서드와 비교해 가독성이 높고 유연한 객체 생성을 가능하게 한다.
- 가독성 :
여러 필드가 있는 객체를 생성할 때 매개변수의 순서에 의존하지 않고 명시적으로 어떤 필드를 설정하는지 알 수 있다 - 유연성 :
선택적 매개변수를 다룰 때 유용하다. 일부 필드만 설정하고 나머지는 기본값을 사용할 수 있다.
import lombok.Builder;
import lombok.ToString;
@Builder
@ToString
public class Person {
private String name;
private int age;
private String address;
// Getters는 Lombok의 @Getter를 사용할 수 있습니다.
}
public class Main {
public static void main(String[] args) {
// 빌더 패턴을 사용하여 Person 객체 생성
Person person = Person.builder()
.name("John Doe")
.age(30)
.address("1234 Elm Street")
.build();
}
}
'Person.builder()' 메소드를 호출하면 Person 객체를 생성하기 위한 빌더 객체가 반환된다. 이후 체이닝 방식으로 필드 값을 설정한 후 build() 메서드를 호출하여 최종적으로 Person 객체가 생성된다.
@Builder는 특히 필드가 많은 클래스나 생성자가 복잡한 클래스에서 자주 사용된다.
'Java > Spring' 카테고리의 다른 글
[Spring] @RequestBody 사용하기 (0) | 2024.08.28 |
---|---|
[Spring] 정적 팩토리 메서드 패턴 (0) | 2024.08.27 |
[Spring] @Configuration (0) | 2024.08.26 |
[Mybatis] <trim> 동적 쿼리 사용하기 (0) | 2024.08.26 |
[Spring] @RequestMapping이란? - Annotation (0) | 2024.08.22 |