@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 패턴은 순서에 상관없이 초기화 할 수 있는 것이 큰 장점이다.

 

 

+ Recent posts