@AllArgsConstructor
lombok 어노테이션 의 하나로,
모든 매개변수가 있는 생성자를 의미한다.
@AllArgsConstructor
=
Member.java
public class Member {
private int id;
private String username;
private String password;
private String email;
public Member(int id, String username, String password, String email) {
super();
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
으로 @AllArgsConstructor 어노테이션을 사용하면 굳이 이렇게 생성자를 만들 필요가 없다.
대신, 매개변수를 3개만 받는 경우
즉, 생성자 오버로드로 필요에 따른 매개변수를 설정을 할 때는 오류가 발생한다.
@RestController
public class HttpControllerTest {
@GetMapping("/http/lombok")
public String lombokTest() {
Member m = new Member(100,"hello","ddd@naver.com");
//오류 발생
return "lombok test 완료
}
}
그렇기 때문에 그에 맞는 매개변수가 있는 생성자가 필요하다.
public Member(int id, String username, String email) {
super();
this.id = id;
this.username = username;
this.email = email;
}
매번 이렇게 생성자를 추가해야 할까?
이때 사용하는 것이 @Builder 어노테이션이다.
@Builder
생성자가 여러개 있을 필요 없이,
모든 매개변수가 있는 생성자를 하나 만든다.
@Builder
public Member(int id, String username, String password, String email) {
super();
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
생성자 위에 어노테이션을 입력한다.
※ @AllArgsConstructor은 모든 매개변수가 있는 생성자와 같은 역할이기때문에 중복이된다.
오류가 나기 때문에 Builder 패턴을 사용할 땐 지워야 한다.
이제 Builder 패턴을 사용해보자
Member m = new Member(100,"hi","ddd@naver.com");
대신 ->
Member m = Member.builder().email("ddd@").password("1122").build();
.builder()로 열고 .build()로 닫는다.
핵심은 !!
id,username,password,email 다 값을 넣어도 되고 일부분만 값을 넣어도 된다.
그리고 제일 좋은 점은 순서에 구애 받지 않는다는 것이다.
생성자로 초기화 할 때는 id,username, password, email 순서로 초기화를 시켜야 하지만
Builder 패턴은 순서에 상관없이 초기화 할 수 있는 것이 큰 장점이다.
'SpringBoot' 카테고리의 다른 글
Springboot - 시큐리티(security 의존성 설정,taglib) (0) | 2020.12.25 |
---|---|
Springboot - 전통적인 방식의 로그인 (0) | 2020.12.25 |
Springboot -JSTL (의존성 설정) (0) | 2020.12.25 |
SpringBoot - JPA란?(의존성 설정, @어노테이션) (0) | 2020.12.23 |
Lombok 다운, 설정 (0) | 2020.12.22 |