본문으로 바로가기

[스프링 부트]1. 사용 어노테이션 설명

category SPRING/스프링부트 2021. 5. 24. 17:03
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=주소 테스트)

 

 

출처:https://lemontia.tistory.com/483

728x90
반응형
LIST