spring boot mybatis 환경에서 sql-mapper-config.xml 파일을 설정하기 전에는 오류가 발생안했는데 sql-mapper-config.xml 파일을 설정하고 서버를 실행할때 아래와 같은 오류가 발생하였습니다.
Cannot resolve reference to bean 'sqlSessionTemplate' while setting bean property 'sqlSessionTemplate'
해당 에러는 주로 MyBatis와 Spring Boot를 통합할 때 발생하는 문제 중 하나입니다. 이 에러는 sqlSessionTemplate 빈을 찾을 수 없다는 것을 나타내며, 주로 설정 파일이나 프로젝트 구조와 관련이 있을 수 있습니다.
아래의 항목에 의해서 에러가 발생할 수 있습니다.
- MyBatis 및 Spring Boot 의존성 확인:
- 프로젝트의 의존성 관리 설정이 올바르지 않으면 에러가 발생할 수 있습니다. MyBatis와 Spring Boot의 의존성 버전이 맞지 않을 경우 런타임에 문제가 발생할 수 있습니다.
- MyBatis 설정 확인:
- sql-mapper-config.xml 파일에 정의된 MyBatis 설정이 올바르지 않으면 에러가 발생할 수 있습니다.
- MyBatis의 설정 파일에서는 sqlSessionFactory 빈을 생성하고, 그것을 기반으로 sqlSessionTemplate 빈을 생성합니다.
- Mapper 위치 확인:
- mapper-locations 속성이 정확한 경로를 가리키고 있지 않으면 에러가 발생할 수 있습니다. classpath:/sqlmap/**/*.xml가 실제로 매퍼 파일들이 위치한 경로를 참조해야 합니다.
- 컴포넌트 스캔 및 패키지 구조:
- Spring Boot 애플리케이션의 패키지 구조와 컴포넌트 스캔이 제대로 설정되어 있는지 확인이 필요합니다. 매퍼 인터페이스 및 MyBatis 설정이 정상적으로 스캔되어야 합니다.
제 경우에는 sql-mapper-config.xml 파일을 추가할 경우 오류가 발생하여서 sql-mapper-config.xml 설정을 확인해보았는데 아래와 같이 오류가 발생할만한 내용이 없었습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
그다음으로 sql-mapper-config.xml 파일의 위치를 설정하는 application.yml 파일을 확인해봤습니다.
mybatis:
check-config-location: true
mapper-locations: classpath:/sqlmap/**/*.xml
config-location: classpath:/sqlmap/sql-mapper-config.xml
mapper-locations: classpath:/sqlmap/**/*.xml
config-location: classpath:/sqlmap/sql-mapper-config.xml
mapper-locations에서는 sqlmap 폴더 아래의 모든 폴더로 설정했는데 config-location에서는 sqlmap 폴더 아래의 sql-mapper-config.xml 파일로 설정해서 설정이 충돌나지 않을까 싶어서 아래와 같이 수정하고 서버를 시작하니 정상적으로 실행되었습니다.
mybatis:
check-config-location: true
mapper-locations: classpath:/sqlmap/mysql/**/*.xml
config-location: classpath:/sqlmap/sql-mapper-config.xml
참고자료
https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
'개발 > spring, spring boot' 카테고리의 다른 글
Spring Boot Cache 사용 방법 (0) | 2024.01.28 |
---|---|
spring boot tcp server 구현(spring integration) (0) | 2024.01.17 |
[Spring boot] Springdoc-openapi를 통한 Swagger UI 설정 (1) | 2024.01.11 |
[Spring boot] WebSocket + STOMP (0) | 2023.12.14 |
[Spring boot] WebSocket 사용 (0) | 2023.12.13 |