728x90
반응형
SMALL
@Builder
왜 사용할까?
예제를 보며 이해하자
유저정보를 담는 객체
public class UserInfo {
private String name;
private int age;
private String addr;
public UserInfo(String name, int age, String addr){
this.name = name;
this.age = age;
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getUserInfo(){
return String.format("name: %s, age: %d, addr: %s", name, age, addr);
}
}
해당 객체를 사용시
UserInfo userInfo = new UserInfo("테스터", 25, "서울시 강남구");
System.out.println(userInfo.getUserInfo());
만약 주소를 입력하지 않고 생성을 하고싶으면?
UserInfo userInfo2 = new UserInfo("테스터", 25, null);
System.out.println(userInfo2.getUserInfo());
null을 넣는 것은 보기 않좋으니 생성자를 추가로 만드는법도 존재한다.
그러나 파라미터 요건이 자주 변경된다면 매번 생성자를 만드는 것도 일이다.
이런 상황을 피하기 위해 직관적인 객체를 만들 수 있게 돕는것이 빌더 패턴!
빌더패턴의 효과
1.불필요한 생성자 제거
2.데이터의 순서에 상관없이 객체 생성 가능
3.명시적 선언으로 이해하기 쉬움
빌더패턴으로의 변환 시작!
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class UserInfoLombok {
private String name;
private int age;
private String addr;
}
유저객체 생성
UserInfoLombok userInfoLombok = UserInfoLombok.builder()
.name("Lombok 적용")
.addr("주소 테스트")
.build();
System.out.println(userInfoLombok);
// 결과=> UserInfoLombok(name=Lombok 적용, age=0, addr=주소 테스트)
728x90
반응형
LIST
'SPRING > 스프링부트' 카테고리의 다른 글
3.스프링 부트 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. (0) | 2022.01.10 |
---|---|
[스프링부트]2. Spring Boot & JMS & ActiveMQ 연동 및 테스트 (0) | 2021.12.02 |
[스프링부트]1. [Error] Querydsl Cannot find symbol 오류 (0) | 2021.11.20 |
Thymeleaf 작동이 안되는 원인 (3) | 2021.11.19 |
어노테이션 정리 (0) | 2021.11.15 |