No bean named 'sqlMapClient' available

나무꾼의 작업일지·2023년 4월 14일
0

eGovFramework

목록 보기
3/3

문제

전자정부프레임워크 3.9에서 4.2로 이관 중 No bean named 'sqlMapClient' available 에러가 발생했다.
기존 프로젝트에 sqlMapClient 설정 부분이 있었지만, 신규 프로젝트는 그 부분 없이 실행이 잘 되었다.

context-sqlMap.xml(기존 프로젝트)

# sqlMapClient 존재
<bean id="sqlMapClient" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocations">
    <list>
      <value>classpath:/egovframework/sqlmap/config/${Globals.DbType}/*.xml</value>
    </list>
  </property>
  <property name="dataSource" ref="dataSource-${Globals.DbType}"/>
  <property name="lobHandler" ref="lobHandler"/>
</bean>

해결

  1. 기존 프로젝트의 DAO가 상속받는 EgovAbstractDAO를 EgovAbstractMapper로 수정한다.

ExampleDAO.java

기존

import org.egovframe.rte.psl.dataaccess.EgovAbstractDAO;@Repository("ExampleDAO")
public class ExampleDAO extends EgovAbstractDAO {

수정

import org.egovframe.rte.psl.dataaccess.EgovAbstractMapper;@Repository("ExampleDAO")
public class ExampleDAO extends EgovAbstractMapper {
  1. SqlSession 메서드를 수정한다.

기존

return (ExampleVO) select("ExampleDAO.selectExample", vo);

수정( select → selectOne )

return selectOne("ExampleDAO.selectExample", vo); // 강제 형변환자 삭제

기존

return (List<ExampleVO>) list("ExampleDAO.selectExampleList", vo);

수정( list → selectList )

return selectList("ExampleDAO.selectExampleList", vo); // 강제 형변환자 삭제

SqlSession 및 기타 자세한 내용은 mybatis SqlSession 참고

결론

기존 소스 코드를 그대로 가져오면서 EgovAbstractDAO가 sqlMapClient를 찾고 있었기 때문에 생긴 문제라는 것을 알았다.

profile
열 번 찍어 안넘어가는 코드 없다

0개의 댓글

관련 채용 정보