2020년 3월 2일 월요일

@MapperScan 또는 MapperScannerConfigurer 에서 annotationClass 지정이 되지 않을때(not work)


SpringBoot 에 MyBatis 설정시

SpringBoot 버전에 따라 되는 경우가 있고 안되는 경우가 있는데

No MyBatis mapper was found in '[com.neutti]' package. Please check your configuration.

이런 메시지가 나오면서 Mapper Scan에 실패한다.

단 기본 애노테이션인 @Mapper 인 경우 정상 작동한다.

SpringBoot 버전이 상위버전일 경우가 안되기 때문에 해결을 하고 지나가야된다.

이유는 애노테이션 인터페이스 선언 문제인듯 한데.


/** * database.base 매핑 */
public @interface BaseMapper {
}

에서

/** * database.base 매핑 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
public @interface BaseMapper {
}

이런식으로 선언해주면 잘 작동한다.

도대체 이유를 알수 없어... 혹시나 해서 @Mapper 선언부분을 확인해서 동일하게 만들어주니 무사통과...

아무래도 마이바티스가 스프링과는 한몸이 아니기때문에 설정시 이런저런 오류가 나오는데

경고 메시지가 친절하진 않다.. 혹시 설정이 의도한대로 되지 않는다면 버전 체크도 하고 넘어가야 할듯

https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/


댓글 1개:

  1. 잘 보았습니다. 덕분에 문제 하나 해결하였습니다.

    답글삭제