작성
·
242
1
BookService에서 @RequiredArgsConstructor을 설정하면
책 대출, 책 반납 등 BookRepository를 사용하는 코드에서 에러가 발생합니다. 오류 메시지는 "this.bookRepository" is null입니다. BookService에서 bookRepository가 받아오지 못하는 것 같습니다.
또한, 해당 어노테이션을 지운 후 생성자로 변경하면, 코드는 정상적으로 돌아가게 됩니다. Lombok의 문제인 건지, 코드의 특정 부분을 설정하면 되는 것인지 궁금합니다.
답변 1
0
안녕하세요 지수님! 🙂 좋은 질문 남겨 주셔서 감사합니다.
사용해주신 @RequiredArgsConsturctor
는 "꼭 필요한 필드"에 대해서만 생성자를 만드는 기능입니다.
여기서 "꼭 필요한 필드"는 초기화 하지 않았을 때 에러가 발생하는 필드를 의미하는데요! 예를 들어,
public class Sample {
private String str1;
private final String str2;
}
위와 같이 str1, str2 두 가지 필드가 있다고 한다면,
str1
은 null로 값이 자동 할당되고 에러가 발생하지 않는 반면, str2
는 final이 붙어 있음에도 초기값이 지정되어 있지 않기 때문에 에러가 발생하게 됩니다!
따라서 사용해주신 XXXRepository에 private final
과 같은 지시어를 붙여주시면 해결될 것 같습니다. 👍
감사합니다!! 🙇