에러 내용
Caused by: java.lang.ClassNotFoundException: Cannot find class: 별칭
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200)
환경
- org.mybatis.spring.boot:mybatis-spring-boot-starter 의존성 사용
- SqlSessionFactory 빈을 직접 등록해서 사용
원인
SqlSessionFactory 빈을 별도로 등록하지 않고 스프링 부트 자동 설정을 통해 빈이 등록되도록 하면 문제가 없다
org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure 의존성의 MybatisAutoConfiguration 클래스에는 sqlSessionFactory 빈을 자동 설정하게 되어 있는데
@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(dataSource);
factory.setVfs(SpringBootVFS.class);
..
여기서 setVfs 메서드 호출하는 부분이 있다
SpringBootVFS는 MyBatis의 가상 파일 시스템(Virtual File System) 구현 중 하나로, Spring Boot 프로젝트의 클래스 경로와 리소스를 관리하고 접근하는 역할을 한다. SpringBootVFS를 사용하면 Spring Boot의 클래스 로더와 리소스 로더를 통해 MyBatis가 클래스 패스 및 리소스를 검색할 수 있게 해준다
결국 문제 원인은 SqlSessionFactory 빈을 직접 등록 시 해당 메서드 호출하는 부분이 빠져있었기 때문이었다
해결
factory.setVfs(SpringBootVFS.class); 추가하여 해결
참고
'Spring > Spring Boot' 카테고리의 다른 글
| Spring Boot > Boot 1을 Boot 2로 전환 (0) | 2024.03.25 |
|---|---|
| Spring Boot > 빌드 설정 > Maven (0) | 2024.03.08 |
| Spring Boot > 애플리케이션 실행 방법 (0) | 2024.03.08 |
| Spring Boot > 문제 해결 > 내장 톰캣 사용 시 IntelliJ IDEA에서 src/main/webapp/WEB-INF 아래의 JSP 파일을 정상적으로 읽지 못하는 이슈 (0) | 2024.02.22 |