250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 오블완
    • 뉴스앱

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/spring, spring boot

    [mybatis] Cannot resolve reference to bean 'sqlSessionTemplate' while setting bean property 'sqlSessionTemplate' 에러

    2024. 1. 17. 09:59
    728x90
    반응형

    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 빈을 찾을 수 없다는 것을 나타내며, 주로 설정 파일이나 프로젝트 구조와 관련이 있을 수 있습니다.

    아래의 항목에 의해서 에러가 발생할 수 있습니다.

    1. MyBatis 및 Spring Boot 의존성 확인:
      • 프로젝트의 의존성 관리 설정이 올바르지 않으면 에러가 발생할 수 있습니다. MyBatis와 Spring Boot의 의존성 버전이 맞지 않을 경우 런타임에 문제가 발생할 수 있습니다.
    2. MyBatis 설정 확인:
      • sql-mapper-config.xml 파일에 정의된 MyBatis 설정이 올바르지 않으면 에러가 발생할 수 있습니다.
      • MyBatis의 설정 파일에서는 sqlSessionFactory 빈을 생성하고, 그것을 기반으로 sqlSessionTemplate 빈을 생성합니다.
    3. Mapper 위치 확인:
      • mapper-locations 속성이 정확한 경로를 가리키고 있지 않으면 에러가 발생할 수 있습니다.  classpath:/sqlmap/**/*.xml가 실제로 매퍼 파일들이 위치한 경로를 참조해야 합니다.
    4. 컴포넌트 스캔 및 패키지 구조:
      • 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/

    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > 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
      '개발/spring, spring boot' 카테고리의 다른 글
      • Spring Boot Cache 사용 방법
      • spring boot tcp server 구현(spring integration)
      • [Spring boot] Springdoc-openapi를 통한 Swagger UI 설정
      • [Spring boot] WebSocket + STOMP
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바