반응형
목차
spring에서 의존성 주입 시 자주 발생하는 실수이다.(나다, 내가 그렇다.)
위 코드에서 어디가 잘못 되었을까? 무엇 때문에 NPE가 발생하는 것일까?
콘솔에서 친절하게 라인까지 알려주고 있다.
31번 째 라인으로 가보자
그냥 board 테이블에 있는 리스트를 페이징해서 가져오는게 전부다.
원인을 몰랐을 땐 DB에서 가져오는게 null인가? 이런 생각을 했었는데..
하지만 아래 코드에서는 생성한 list를 조작하는 일이 전혀 없다.(list에서 get해서 뭘 가져온다거나)
근데 왜 널포인터일까?
디버거로 찍어보자 boardService가 null이다.
이놈의 객체가 생성 안된거다.
BoardController에서 BoardService라는 놈을 생성자 주입해서 쓰려고 하는데 이 객체가 null이니..
범인은 아래다.
컨트롤러 클래스레벨에 @RequiredArgsConstructor 애노테이션을 붙였는데 boardService에 final을 붙이지 않아서 그렇다.
@RequiredArgsConstructor은 final이나 @NotNull이 붙은 필드를 생성자 방식으로 주입시켜주는데 해당 필드에 final이 없다.
코딩하면서 실수한 것이다.
아래처럼 final을 붙이고 다시 디버거로 찍어보면 객체가 null이 아닌걸 확인 할 수 있다.
반응형
'IT > development' 카테고리의 다른 글
[eclipse] preparing launch delegate(feat. tomcat 무한 starting) (0) | 2022.11.23 |
---|---|
[eclipse] eclipse java comment template 설정 (0) | 2022.11.23 |
[springBoot] JPA @Entity에서 @NoArgsConstructor, @AllArgsConstructor, @Builder... 사용 관련 정리 (0) | 2022.11.22 |
[mybatis] mybatis 동적 쿼리 작성 시 "," 관련 (0) | 2022.11.22 |
[Spring] spring REST API 공부(feat. @RestController) (0) | 2022.11.22 |