inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 2편 - 데이터 접근 활용 기술

MyBatis 적용2 - 설정과 실행

ItemMapper 빈 오류

872

당무

작성한 질문수 1

0

[질문 내용]
안녕하세요, 스프링부트 3.3.0 버전이라서 교재에 나온대로 mybatis-spring-boot-starter 3.0.3으로 추가했는데 다음과 같이 ItemMapper가 빈으로 등록되지 않습니다.

Could not autowire. No beans of 'ItemMapper' type found.

그래서 다른 분들처럼 버전 내려보기도 해봤는데 계속 오류가 뜨네요. 자주하는 질문에 나오는 프로젝트 초기화도 해봤는데 오류가 생깁니다. 한번 봐주시면 감사하겠습니다.

구글 드라이브 https://drive.google.com/file/d/1EDUWv_GFWyZqOXpXsSuGvkU_ovDC8SWA/view?usp=sharing

spring mvc jpa querydsl spring-data-mybatis spring-jpa

답변 2

3

신창호

저도 동일한 에러가 나타나서..
MyBatis의 MapperScan을 사용하여 직접 주입하는 방식으로 해결했습니다..

만약 영한님 강의대로 진행했다면 코드는 아래와 같습니다.

@Configuration
@RequiredArgsConstructor
@MapperScan("hello.itemservice.repository.mybatis") // 추가한 부분, Mapper 인터페이스가 있는 경로
public class MyBatisConfig {

    private final ItemMapper itemMapper;

    @Bean
    public ItemService itemService() {
        return new ItemServiceV1(itemRepository());
    }

    @Bean
    public ItemRepository itemRepository() {
        return new MyBatisItemRepository(itemMapper);
    }
}


(그리고 내부적으로 먼가 꼬여있었는지..? 이후에 MapperScan을 주석처리하면 신기하게도... 찾아가는 경우가 생기더라고요.. )

0

OMG

안녕하세요. 당무님, 공식 서포터즈 OMG입니다.

제 개발 환경인 인텔리제이 유료버전/무료버전에서 문제 없이 동작합니다.

오히려 빈 주입 오류보다는 itemMapper의 쿼리 오류가 발생하더라구요.

 

<insert id="save" useGeneratedKeys="true" keyProperty="id">
insert into item (item_name, price, quantitiy)
values (#{itemName}, #{price}, #{quantity})
</insert>

 

올리신 코드를 다운로드 받아서 인텔리제이에서 다운로드 받은 프로젝트를 열어서 확인해보시겠어요?

동일한 상황이라면 build.gradle을 아래의 빨간 부분의 3.3.0 대신 3.2.x로 변경하고 자바 버전을 명시하는 코드도 변경해서 확인해보시겠어요?

 

(변경 후에는 코끼리 버튼을 클릭해주세요 image)

build.gradle

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.3'
id 'io.spring.dependency-management' version '1.1.4'
}


group = 'hello'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

감사합니다.

RepositoryTest의 패키지 위치가 domain인 이유

0

29

2

REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!

0

29

1

update()에 사용하는 setter 질문드립니다.

0

47

1

SQL 중심적 개발의 문제점에 대한 질문

0

72

1

혹시 Containing 을 안쓰신 이유가 있을까요?

0

83

2

[공유] 스프링부트 4.x 버전 mybatis 연동

0

173

1

@repository 어노테이션

0

89

3

ItemService

0

58

1

논리 커밋, 물리 커밋 질문드립니다.

0

54

1

내부 트랜잭션 커밋은 필수인가요?

0

57

1

프록시 커넥션 객체를 반환할 때 생성하는건가요?

0

54

1

Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)

2

178

2

JPQL 대신 네이티브 쿼리를 사용해야 하는 경우

0

77

1

@EventListener(ApplicationReadyEvent.class) 관련

0

88

1

트랜잭션 동기화 매니저와 데이터 소스

0

76

1

DB 관련 강의 개설 계획은 없으신건가요?

0

133

2

물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요

0

94

1

스프링 3 버전 이상 rollbackFor 변경된듯요

1

112

1

트랜잭션 전파 질문.

0

87

1

프로젝트 오픈 에러

0

126

1

외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다

0

83

2

같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환

0

72

1

h2 인메모리 테스트중 예약어 충돌날 경우 대처방법

0

102

1

커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문

0

98

2