본문 바로가기
DB/Mybatis

Mybatis XML없이 java로 설정 - @MapperScan 적용, BindingException 에러

by hongdor 2020. 10. 21.
728x90

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

 

HDK7/Practice

Contribute to HDK7/Practice development by creating an account on GitHub.

github.com

 

 

 

 

 

728x90

댓글