팀 프로젝트 중 데이터 값을 넣어어 준 후 그것을 색인해오는 테스트를 위해 select쿼리를 날려서 값을 받아오려는 중 위와 같은 오류가 발생했다.
원인
역시나 모든 오류가 그렇듯이 알고나면 아주 간단한 오류였던 것 처럼 이 녀석도 because "this.sqlSessionTemplate" is null 오류 메세지의 뜻은 찾아 볼필요도 없이 알 수 있듯이 sqlSessionTemplate 값이 null로 값을 못받아 온다는 뜻인데,
원인을 찾고 해결하는데까지 생각보다 오래 걸렸다. 찾아본 쿼리에서 오류가 있을 수 있다는 글도 있고, mapper의 nameplace나 설정의 문제라는 글도 있었으나 그 중 제일 유력한 것은 sqlSessionTemplate를 주입을 안시켜줘서 발생하는 것으로 것이 이미 한번 위 오류를 그렇게 해결해보았기에 다시 service단을 봤으나
이미 한번 실수 한적이 있어 역시 주입을 잘 시켜주었어서 어디가 문제인지 찾지 못해 mapper에가서 괜한 쿼리를 계속 유심히 훓어보고 xml에 beans로 org.mybatis.spring.SqlSessionTemplate이 선언이 안된건지 찾아보며 시간을 잡아먹었다.
해결
우선은 겪어본 해결 방법은 이전에 겪었던 것처럼 autowired의 문제였는데 이번엔 SqlSessionTemplate쪽에만 신경을 써서 쓰고는 service에서 new 생성자를 습관처럼 만들어서 사용하여서 발생한 것이 었다.
위처럼 new생성자로 선언한 service를 @autowired로 해주니 해결되었다.
만약 spring환경에서 개발 중 because "this.sqlSessionTemplate" is null 같은 에러가 발생한다면
sqlSessionTemplate는 @autowired로 잘 주입되었는지,
혹은 생성한 service가 @autowired 되었는지 확인해보고 안되있다면 수정해보고 다시 실행해보길 바란다.
'오류 정리 ( 같은 실수 하지 말자)' 카테고리의 다른 글
[ SQL error] Columm count doesn`t match value count at row 1 (0) | 2022.02.05 |
---|---|
[ 500 ERROR ]Mapped Statements collection does not contain value for~ 오류 (0) | 2022.01.20 |
[500 error] Cannot invoke "java.lang.Integer.intValue() (0) | 2022.01.05 |
$(function(){ }); 부분이 실행 안될 때 Uncaught ReferenceError: $ is not defined (0) | 2022.01.04 |
SQL 오류 (1265) Data truncated for column (0) | 2022.01.03 |