코딩마을방범대
Builder를 사용해야 하는 이유 & 포스트맨의 변수 본문
728x90
Builder란
- builder() 함수를 통해 객체를 생성할 수 있는 빌더를 얻고,
값 세팅 후 build()를 통해 빌더를 작동 시켜 객체를 생성
생성자의 단점
- 매개변수가 많아지면 코드를 읽기 어렵고, 어떤 순서로 매개변수 넣어야하는지 헷갈림
- 하나의 객체를 만들기 위해 메소드 여러개를 호출해야 함
- 객체가 완전히 생성되기 전까지는 일관성(consisitency)이 무너진 상태(미완성) ⇒ 디버깅 어려움
- 객체에 필요 없는 필드가 있는 경우 더미 값을 넣어주거나 해당 필드가 없는 생성자를 만들어주어야 함
User user = new User("dbkim", 25, "female");
Builder의 장점
1. 필요한 데이터만 설정할 수 있음
- 객체에 필요하지 않은 필드의 경우 생략 가능함
private Stirng name private int age // age 생략 User user = User.builder().name("dbkim").build()
2. 유연성을 확보할 수 있음
- 새로운 필드가 추가돼도 기존 코드를 수정할 필요가 없음
// 생성자의 ASIS new User("dbkim", 25) // 생성자의 TOBE new User("dbkim", 25, "female")
3. 불변성을 확보할 수 있음
- 수정자 패턴(Setter)의 경우 Open-Closed 법칙에 위배되고 불필요한 코드 리딩 등을 유발,
그렇기 때문에 클래스 변수를 final로 선언하고 객체의 생성은 빌더에 맡기는 것이 좋음@RequiredArgsConstructor @Builder public class User{ private final String name; private final int age; }
- builderMethodName (default = builder)
- 빌더를 생성하는 메서드의 이름을 변경할 수 있음
- buildMethodName (default = build)
- 빌더에 필드 값들을 입력하고 마지막에 객체를 생성하는 동작인 빌드 메서드의 이름을 변경 할 수 있음
- toBuilder (default = false)
- 빌더로 만든 인스턴스에서 toBuilder() 메서드를 호출해 그 인스턴스 값을 베이스로 빌더 패턴으로 새로운 인스턴스를 생성할 수 있음
User user2 = user1.toBuilder().name("SweetRain").build();
Postman의 변수
특징
- 기존에 사용하던 API의 IP 또는 패턴이 바뀌어도 Postman에 정의해둔 API들을 모두 일일히 바꿀 필요가 없음
- 5가지 유형의 스코프가 있음 ( 우선 순위: Local -> Data -> Environment -> Collection -> Global )
스코프(Scope)란?
변수에 접근할 수 있는 범위
1. Environment(환경 변수)
각 워크스페이스에서만 적용되고, 여러 개를 생성할 수 있음
- Variable: 변수명
- Type: default 와 secret
- Initial value: 모든 사용자가 접근할 수 있는 value
- Current value: 로컬에서만 접근할 수 있는 value
2. Global(전역 변수)
- 모든 범위에서 항상 사용할 수 있는 변수의 집합을 제공
- 한 번에 하나의 집합만 활성화할 수 있음
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
Autowired를 지양하는 이유 & 정규표현식 (0) | 2023.05.25 |
---|---|
스케쥴러(Scheduler)에 대하여 (1) | 2023.05.25 |
SpringBoot에서 JSON 활용하기 (0) | 2023.05.25 |
Enum 에 대하여 (1) | 2023.05.25 |
MyBatis 기본 세팅과 활용 (0) | 2023.05.25 |