[스프링 부트 오류] java.lang.NullPointerException(lombok 체크)
오류제목 : java.lang.NullPointerException(lombok 체크)
오류내용 : 회사에서 잘되던 코드가 집에서 실해하니 Null 오류를 뿜어냈다.
오류원인 : lombok 미추가로 인한 getter, setter 기능 미실행으로 발생한 오류였다.
오류해결 : lombok 추가와 Job에서 final 선언 추가 후 해결하였다.
잘되던 코드가 안된다면 lombok을 체크해보자.
회사에서 잘되던 코드가 집에서는 실행하니 NullPointer 오류를 발생했다.
database.properties라고 생각하여 database.properties 변경을 하였으나 동일한 문제가 발생하였다.
원인은 lombok미설치로인한 getter, setter 실패
그러므로 잘되던 코드가 안된다면 getter, setter 기능이 잘되는지 체크해보도록하자.
해당 기능이 정상적으로 작동한다면, 다음과 같이 outline에서 확인이 가능하다.
No default constructor found 오류가 발생한다면 @NoArgsConstructor 어노테이션을 추가하라.
자주 발생했던 문제는 No default constructor found 오류이다.
해당 오류는 다음과 같이 VO에 @NoArgsConstructor 어노테이션을 추가해서 해결할 수 있다.
JobBuilderFactory, StepBuilderFactory에 final을 안쓰면 NullPointerException 오류가 발생할 수 있다.
다음과 같이 정상적으로 작동되는 코드에서 final을 삭제해보자.
다음과 같이 삭제하니
오류가 발생하는 것을 확인할 수 있다.
final 추가 후 정상 실행되는 것을 확인할 수 있다.
final 추가여부에 따라서 Null오류가 발생하는 것에 대해서는 추후 연구해보도록하자.
또는 다음과 같이 @Autowired해서 해결할 수도있다.
찾아보니 다음과 같은 이유는 DI : Dependency Injection (의존관계 주입)라고 하는데
의존성 주입은 세가지 방법으로가능하다.
1. @Autowired (Field Injection)
2. private final 그리고 위와 같이(Constructor Injection)
3. setter 생성자로 의존성 주입 (Setter injection) 마지막 사진처럼
그렇기 때문에 다음과 같이 세가지 방법으로 의존성 주입을 해야 NullPointerException 오류가 발생하지않으니 참고하도록하자.