전자정부의 @Mapper 어노테이션으로 매퍼 개발 시, 다중 데이터베이스 설정 파일에서 MapperScan 되지 않음
- 작성자 :
- d******1
- 작성일 :
- 2024-04-24 23:13:28
- 조회수 :
- 358
- 구분 :
- 개발환경 / 4.2
- 진행상태 :
- 완료
Q
안녕하세요
전자정부(4.2), 스프링부트(2.7)로 개발 중에,
다중 데이터베이스를 설정하다가 @Mapper 어노테이션 관련 이슈가 발생해 문의 드립니다.
2개의 mariaDB (Main DB, Sub DB) 를 연결하고,
설정은 아래의 글과 동일하게 java class config 파일로 하였습니다.
https://jangjjolkit.tistory.com/m/55
mapper에 @org.egovframe.rte.psl.dataaccess.mapper.Mapper 어노테이션을 달아 개발하였는데,
@Primary 를 달았던 MainDB 설정 파일은 문제가 없었지만, SubDB 설정 파일이 제대로 적용되지 않았습니다.
SubDB 설정 파일 MapperScan 경로를 잘 인식하지 못했는지, 아래와 같은 오류가 떴습니다.
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): (SUBdb mapper 경로).test
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:229)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53)
at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:96)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.apache.ibatis.util.MapUtil.computeIfAbsent(MapUtil.java:36)
at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:94)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at com.sun.proxy.$Proxy87.test(Unknown Source)
해당 SubDB의 mapper 인터페이스에 어노테이션을 @org.apache.ibatis.annotations.Mapper로 교체하니 오류 없이 정상적으로 동작하였습니다.
여쭤보고 싶은 질문입니다.
1.
@org.egovframe.rte.psl.dataaccess.mapper.Mapper,
@org.apache.ibatis.annotations.Mapper 를 혼용하여 개발해도 되는지요?
2.
전자정부의 @Mapper 어노테이션만을 사용할 때, java class config 파일로 설정하면 안 되나요?
java class config 파일을 사용하려면 추가하여야 하는 설정이 있는지요?
감사합니다.
전자정부(4.2), 스프링부트(2.7)로 개발 중에,
다중 데이터베이스를 설정하다가 @Mapper 어노테이션 관련 이슈가 발생해 문의 드립니다.
2개의 mariaDB (Main DB, Sub DB) 를 연결하고,
설정은 아래의 글과 동일하게 java class config 파일로 하였습니다.
https://jangjjolkit.tistory.com/m/55
mapper에 @org.egovframe.rte.psl.dataaccess.mapper.Mapper 어노테이션을 달아 개발하였는데,
@Primary 를 달았던 MainDB 설정 파일은 문제가 없었지만, SubDB 설정 파일이 제대로 적용되지 않았습니다.
SubDB 설정 파일 MapperScan 경로를 잘 인식하지 못했는지, 아래와 같은 오류가 떴습니다.
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): (SUBdb mapper 경로).test
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:229)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53)
at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:96)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.apache.ibatis.util.MapUtil.computeIfAbsent(MapUtil.java:36)
at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:94)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at com.sun.proxy.$Proxy87.test(Unknown Source)
해당 SubDB의 mapper 인터페이스에 어노테이션을 @org.apache.ibatis.annotations.Mapper로 교체하니 오류 없이 정상적으로 동작하였습니다.
여쭤보고 싶은 질문입니다.
1.
@org.egovframe.rte.psl.dataaccess.mapper.Mapper,
@org.apache.ibatis.annotations.Mapper 를 혼용하여 개발해도 되는지요?
2.
전자정부의 @Mapper 어노테이션만을 사용할 때, java class config 파일로 설정하면 안 되나요?
java class config 파일을 사용하려면 추가하여야 하는 설정이 있는지요?
감사합니다.
환경정보
-
- OS 정보 : mac
- 표준프레임워크 버전 : 4.2
- JDK(JRE) 정보 : 1.8
- WAS 정보 : springboot 내장 톰캣
- DB 정보 : mariadb 2개로 다중 데이터베이스 설정
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
@Mapper를 사용할 경우, 표준프레임워크 mapper를 사용해주셔야 합니다.
관련내용은
표준프레임워크 적용에 관한 세부 적용기준
아래의 링크에서 확인할 수 있습니다.
기술지원 > 적용지원 서비스 > 이용 절차 > 4단계 적용지원 수행 및 완료 > 가이드 다운로드
https://www.egovframe.go.kr/home/sub.do?menuNo=67
java Config 설정에 대한 예제는
표준프레임워크 Boot Template Simple Homepage에 있으니
EgovConfigAppMapper를 참조해보시길 바랍니다.
감사합니다.
표준프레임워크센터입니다.
@Mapper를 사용할 경우, 표준프레임워크 mapper를 사용해주셔야 합니다.
관련내용은
표준프레임워크 적용에 관한 세부 적용기준
아래의 링크에서 확인할 수 있습니다.
기술지원 > 적용지원 서비스 > 이용 절차 > 4단계 적용지원 수행 및 완료 > 가이드 다운로드
https://www.egovframe.go.kr/home/sub.do?menuNo=67
java Config 설정에 대한 예제는
표준프레임워크 Boot Template Simple Homepage에 있으니
EgovConfigAppMapper를 참조해보시길 바랍니다.
감사합니다.