몽땅뚝딱 개발자

[JAVA] Field mapper in com.service.xxx.* required a bean of type 'com.mapperxxx.*' that could not be found 에러해결 본문

에러일지/JAVA

[JAVA] Field mapper in com.service.xxx.* required a bean of type 'com.mapperxxx.*' that could not be found 에러해결

레오나르도 다빈츠 2021. 6. 4. 13:12

 

API Swagger 프로젝트를 만들면서 mapper를 못 찾는 문제가 생겼다.

1월에는 이거 세팅하는데 10분도 안 걸렸는데(ㅠ) 진짜 똑같이 만들고있는데 자꾸 에러가 났다.

 

어노테이션, Bean, application.properties, pom.xml 등 설정한 부분을 제대로 적었는지 보고

오타가 있는지 꼼꼼히 살펴도 문제가 없고 문제가 없어야했는데 자꾸 mapper를 찾지 못하는 것이다.

 

내가 시도해 본 방법은

1. mainApplication의 @SpringBootApplication 어노테이션 옆에 basePakage를 지정해준다.

2. mainApplication에 @ComponentScan 어노테이션을 달고 옆에 basePakage를 지정해준다.

3. @MapperScan을 달아본다.

4. @Repository를 달아본다.

5. Swagger의 버전을 올려보고 낮춰본다. (관계가 없었지만 지푸라기 잡는 심정으로 시도해 봄,,)

 

하지만 전혀 문제가 해결되지않았고, 그저 제발 어이없는 실수만 아니길 빌고 또 빌었건만

 

에러

Field mapper in com.service.xxx.* required a bean of type 'com.mapperxxx.*' that could not be found

***************************
APPLICATION FAILED TO START
***************************

Description:

Field mapper in com.moddk.swagger.service.TodoServiceImpl required a bean of type 'com.moddk.swagger.mapper.TodoMapper' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.moddk.swagger.mapper.TodoMapper' in your configuration.

 

원인

하다하다 안되서 예전에 만들어 둔 API 프로젝트의 pom.xml 의존성을 죄다 복사해서 붙여넣었다.

그런데 Mapper 클래스에서만 어노테이션이 제대로 붙지 않았다.

 

어노테이션에서 문제가 생겼으면 어노테이션을 달고있는 모든 클래스에서 오류가 터져야하는데 왜 mapper만..?

아니길 바라며 봤더니 역시나 이상한 객체를 import하고 있었다.

 

@Mapper 어노테이션을 달 때 꼼꼼히 살피지않았던 것이다.

org.mapstruct.Mapper... mapstruct 너 뭔데..

뭔데 이름 똑같냐고...

어쨌든 org.apache.ibatis.annotations.mapper로 다시 import 했더니 문제가 해결되었다.

 

 


 

해결하는 내내 머리가 아팠지만 그래도 좋았던 점은 이리저리 문제가 될 만한 요소들을 살펴보는데

원인이 될 것 같은 곳을 보면서 '문제가 생길수가 없는데?'라는 생각을 한 것이다.

 

예전에도 똑같은 문제를 겪었는데 그때는 문제가 될 만한 요소를 짐작조차 하지 못하는 상태였다.

확실히 경험이 많아지니 생각의 범위도 넓어진 것을 체감했다. 좋다~!

 

 

 


개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.

 

Comments