
요즘 회사에서 Front 개발보단 Back단 개발을 더 많이 하고 있다. 그래서 나의 프론트 Trend는 MonoRepo에서 멈췄음.. 뭐 일단 이건 나중에 썰에 추가하려고 생각중이니 각설하고, 오늘의 주인공은 Mybatis인데, 특별히 뭐 세팅 설명하고 이럴 필요는 없을 것 같은게, 구글에 Mybatis 하나만 검색하면 온갖 세팅방법이 다나온다. mybatis-config.xml을 쓰는 Spring MVC 환경에서 세팅, Boot 환경에서 세팅, xml 혐오자들을 위한 JavaConfig 세팅, interface + Mapper.xml 조합 세팅, interface만 쓰는 세팅, interface 구현체 class 만들어쓰는 세팅 등등 진짜 말 그대로 쏟아져나오는데, 요즘에야 JPA가 대세다 대세다 하니 JPA의 인기가 엄청나지만, 이 구글링 결과만 봐도 진짜 스테디셀러는 아직도 쓰고 옛날에도 썼던 이놈이 아닐까 싶다.
할튼 왜 이놈을 가져왔느냐 라며 이유를 묻는다면, 이놈 때문에 내가 삽질을 무려 12시간 넘게 때려버렸기 때문이다. 조금씩 짬이 차올라가면서 자연스레 삽질하는 시간이 줄어들었는데, 신입때야 12시간은 그냥 우습게 삽질했지만, 지금은 어지간하면 1시간 이내로 끝나는 편인데 이놈이 기록을 깼다.
- Mapper-Locations
Mybatis Setting 요근래에 Mapper는 xml에 작성하고 Java Config로 해본사람이라면 꼭 들어봤을텐데, Mapper 들의 위치를 알려주기 위한 용도로 많이 사용하는 옵션이다.
흔히 Mapper Location 세팅을 하게 되면 mapper/**/*.xml을 많이 쓰는데 이렇게 하면 그냥 resource 아래에 있는 모든 Mapper 를 가져오기 때문이다. 근데 어제부터 아래 에러 메세지를 뱉어내면서계속 남들 다 똑같이 하는 세팅인데 나만 저 path안에 mapper가 없다고 난린거임.
class path resource [mapper/**/*.xml] cannot be opened because it does not exist
근데 이 에러가 기가막히는게, xml 내부에 id나 namespace등등 다른 세팅에서 오타가 있거나 하면 뱉어내는 에러다보니 처음엔 내가 진짜 오타를 낸줄알고 계속 mapper 만 들여다봤다. 검색을 해도 뭐 대부분 오타있는지 확인해라 이런 글밖에 없으니 답답해 미칠 지경이었다.
- Solution
해결책을 좀 어이 없게 찾아냈는데, 아이 몰라! 그냥 mapper하나에 다 몰아넣고 해보자! 하고 mapper 하나에 다 몰아넣고 그 Mapper하나만 등록해주니 되는거임..
그래서 mybatis mapper 위치 여러개 검색하니까 그제서야 내가 찾던게 나왔다.
(사실 찾던거라기보단 내 문제와 연관있는 거)
PathMatchingResourcePatternResolver

문제가 된 부분은 이녀석이었다. Mybatis를 Java Class로 설정해주는 방식에서 주로 사용되는데, Resources Dir 안에 들어있는 Mapper 위치를 주입할 때 사용하는 녀석이다. 내 경우에 문제가 됐던건 얘가 getResource라는 메서드도 가지고 있고, getResources라는 메서드도 가지고 있다는게 문제였음. 난 당연히 그냥 하나 뿐이겠거니.. 하고 getResource로 박아놓고 계속 시도 하고 있었는데, 이건 단 하나의 file만을 넣어줄 때 쓰는거였다.. pattern으로 입력해주고 여러개를 가져다 쓰고 싶었으면 getResources를 해야 에러가 안나는거였음..
method이름 진짜 잘봐야겠다... 별것도 아닌게 내 12시간을..
'Dev > Debug' 카테고리의 다른 글
[트러블 슈팅] 메모리 누수 (1) | 2025.03.29 |
---|---|
[AgGrid] Client Side Data, Server Side Data 분리 문제 (0) | 2023.04.19 |