error: cannot find symbol .builder().build(); symbol: method builder() 문제 해결

ggyu_55·2023년 8월 20일
0

take A Sip

목록 보기
5/8

@Builder 어노테이션을 사용하려면 해당 클래스의 생성자가 기본 생성자가 아니어야 한다고 한다.

기본 생성자는 Lombok의 @Builder 어노테이션을 사용할 때 필요한데, 해당 클래스의 생성자가 아예 없거나 인자를 가진 생성자만 존재하는 경우 @NoArgsConstructor 어노테이션을 함께 사용하여 기본 생성자를 생성해야 한다.

주의할 점은 @NoArgsConstructor (access = AccessLevel.PROTECTED ) 기본생성자의 엑세스 레벨을 Protected로 지정하여 패키지 외부에서 해당 클래스의 인스턴스를 직접 생성하는 것을 제한하는게 좋다.

import lombok.NoArgsConstructor;
import lombok.Builder;

@NoArgsConstructor (access = AccessLevel.PROTECTED )
public class JwtFactory {
    @Builder
	public JwtFactory(String subject, Date issuedAt, Date expiration, Map<String, Object> claims) {
    	this.subject = subject != null ? subject : this.subject;
    	this.issuedAt = issuedAt != null ? issuedAt : this.issuedAt;
    	this.expiration = expiration != null ? expiration : this.expiration;
    	this.claims = claims != null ? claims : this.claims;
	}
}

0개의 댓글