전자정부프레임워크 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>
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 { ⁞
기존
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를 찾고 있었기 때문에 생긴 문제라는 것을 알았다.