Entity에서 참조할 때 No Argument Constructor 의 경우에 참조가능한 범위가 있다. 특히 이 경우에 AccessLevel 을 Package 단계로 설정해두면 빨간맛을 뱉는데, 물론 Compile 자체에는 문제가 없을지라도 빨간맛을 보기 싫다면 변경하면 된다.
@AllArgsConstructor(access = AccessLevel.PUBLIC)
@NoArgsConstructor(access = AccessLevel.PACKAGE)
@Builder(toBuilder = true)
@Table(name = "batch_user_emails")
이걸
@NoArgsConstructor(access = AccessLevel.PUBLIC)
Public 단계로 바꿔주면 된다.
에러를 그대로 해석하면 되는 문제다.
아래는 다른 블로그에서 찾아온 기본 맛에 대한 글
@NoArgsConstructor
기본 사용법은 다음과 같습니다.
@NoArgsConstructor
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
}
자바로 표현하면 다음과 같습니다.
public class BookWithOutLombok {
private Long id;
private String isbn;
private String name;
private String author;
public BookWithOutLombok() {
}
}
@AllArgsConstructor
기본 사용법은 다음과 같습니다.
@AllArgsConstructor
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
private boolean useYn;
}
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
private boolean useYn;
public BookWithLombok(final Long id, final String isbn, final String name, final String author, final boolean useYn) {
this.id = id;
this.isbn = isbn;
this.name = name;
this.author = author;
this.useYn = useYn;
}
}
@RequiredArgsConstructor
기본 사용법은 다음과 같습니다.
@RequiredArgsConstructor
public class BookWithLombok {
private final Long id;
private final String isbn;
private final String name;
private final String author;
private boolean useYn;
}
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private final Long id;
private final String isbn;
private final String name;
private final String author;
private boolean useYn;
public BookWithLombok(final Long id, final String isbn, final String name, final String author) {
this.id = id;
this.isbn = isbn;
this.name = name;
this.author = author;
}
}
access - 접근제한자
생성자의 대해서 접근제한자를 지정할 수 있습니다. 기본 접근제한자는 public
입니다.
접근제한자 목록은 다음과 같습니다.
PUBLIC
모든 곳에서 접근 가능합니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.PUBLIC)
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
public BookWithLombok() {
}
}
MODULE
같은 패키지내에서 접근 가능합니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.MODULE)
자바로 표현하면 다음과 같습니다.default
와 동일하며 같은 Lombok에서는 package
와 동일합니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
BookWithLombok() {
}
}
PROTECTED
같은 패키지 또는 자식 클래스에서 사용할 수 있습니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.PROCTECTED)
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
protected BookWithLombok() {
}
}
PACKAGE
같은 패키지안에서 접근 가능하며 MODULE
과 동일한 기능을 합니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.PACKAGE)
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
BookWithLombok() {
}
}
PRIVATE
내부 클래스에서만 사용할 수 있습니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.PRIVATE)
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
private BookWithLombok() {
}
}
NONE
기본값인 PUBLIC
과 동일합니다.
다음과 같이 사용할 수 있습니다.
@NoArgsConstructor(access = AccessLevel.NONE)
자바로 표현하면 다음과 같습니다.
public class BookWithLombok {
private Long id;
private String isbn;
private String name;
private String author;
public BookWithLombok() {
}
}
출처: https://lovethefeel.tistory.com/71 [사는 이야기:티스토리]
'Java > Spring Boot JPA' 카테고리의 다른 글
[JPA] 프록시(Proxy)와 엔티티 연관 관계(LAZY, EAGER) (1) | 2024.03.18 |
---|---|
[JPA] Entity Class의 @NoargsConstructor (access = AccessLevel.PROTECTED) (31) | 2024.03.18 |
[Trouble Shooting] assertThat method 를 못찾을 때 (0) | 2024.02.01 |
[Deprecated] 조저진 signWith (0) | 2024.02.01 |
[Swagger] Spring Boot 3.3.2 와 Swagger 조지기 (32) | 2024.02.01 |