mybatis.org/spring/ko/getting-started.html
공식문서를 보고 따라해도 안되서 하루라는 시간을 소비 했다.
아무리 구글링을 해도 나오지 않았고, 결국 해결하고 열받아서 나같은 사람을 위해 공유하고자 글을 쓴다.
내가 헤맨 부분은 @MapperScan 이 정상적으로 동작하지 않는 것이었다.
org.apache.ibatis.binding.BindingException:
Type interface practice.mybatis.mybatisMapper.MemberMapper is not known to the MapperRegistry.
이런 에러가 계속해서 발생했다.
결론을 말하자면
@Bean
public MemberMapper memberMapper() throws Exception {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory());
return sqlSessionTemplate.getMapper(MemberMapper.class);
}
내가 작성한 위의 코드를 지웠을 때 정상적으로 동작했다. 나는 공식문서에 이러한 빈을 등록하는 방법이 있길래 그대로 했던 것 뿐인데... 이것이 맵퍼스캔을 방해한 모양이다.
Interface를 Bean으로 만든다고 작성한 위 코드를 삭제한 후 @MapperScan이 정상적으로 동작했다.
이유는 추측하건데 @MapperScan으로 등록된 Bean과 직접 등록한 Bean의 이름이 겹쳐서 발생한 현상으로 추정된다.
Full code는 이곳을 참고하면 된다.
github.com/HDK7/Practice/tree/master/mybatis
댓글