서버 스타트시 Property 'sqlMapClient' is required 라는 오류가 납니다.
- 작성자 :
- 송*현
- 작성일 :
- 2010-12-16 10:57:54
- 조회수 :
- 2,891
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
현재 프로젝트에 사용돼지 않는 전자정부프레임워크 기능이 많이 포함되어 있는거 같아 간소화 작업을 하려고 합니다. 그래서 사전에 구성 테스트를 해보는 중에 iBatis 연결시 DAO 클래스에 sqlMapClient 가 DI가 안되는 듯한 오류가 나고 있습니다.
현재 Application Context에
========================
<context:component-scan base-package="package"/>
형태로 명시하여 package 모든 빈들을 자동으로 등록하도록 해놨고
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>/WEB-INF/config/sqlmap/sqlmap-config.xml</value>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
sqlMapClient도 Application context에 명시에 놓았습니다.(사전에 Datasource연결은 테스트 완료했습니다.)
======================
그리고 Web context에
===============
<context:component-scan base-package="package">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
위처럼 등록하여 Controller annotation을 스캔 할수 있도록 설정해 놨습니다.
=============
이 상태에서 controller 클래스에서 바로 dao를 호출해서 테스트를 해 보려고 하는데 자꾸 sqlMapClient가 필요하다는 에러가 납니다. 무슨 문제인지요?
로그파일은 첨부하고 아래는 간단하게 만든 Dao 클래스 입니다.
=-================================
package hiel.com.board.dao;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;
@Repository("BoardDao")
public class BoardDao extends SqlMapClientDaoSupport {
public String selectTest() throws Exception {
return (String)getSqlMapClientTemplate().queryForObject("hiel.board.list");
}
}
현재 Application Context에
========================
<context:component-scan base-package="package"/>
형태로 명시하여 package 모든 빈들을 자동으로 등록하도록 해놨고
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>/WEB-INF/config/sqlmap/sqlmap-config.xml</value>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
sqlMapClient도 Application context에 명시에 놓았습니다.(사전에 Datasource연결은 테스트 완료했습니다.)
======================
그리고 Web context에
===============
<context:component-scan base-package="package">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
위처럼 등록하여 Controller annotation을 스캔 할수 있도록 설정해 놨습니다.
=============
이 상태에서 controller 클래스에서 바로 dao를 호출해서 테스트를 해 보려고 하는데 자꾸 sqlMapClient가 필요하다는 에러가 납니다. 무슨 문제인지요?
로그파일은 첨부하고 아래는 간단하게 만든 Dao 클래스 입니다.
=-================================
package hiel.com.board.dao;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;
@Repository("BoardDao")
public class BoardDao extends SqlMapClientDaoSupport {
public String selectTest() throws Exception {
return (String)getSqlMapClientTemplate().queryForObject("hiel.board.list");
}
}
A
안녕하세요.. 송두현님..
DAO에서 SqlMapCLientDaoSupport를 직접 extends 하시는 경우는
sqlMapClient를 직접 Injection 해주셔야 하는데 다음과 같은 형태로 하시면 됩니다.
@Repository("BoardDao")
public class BoardDao extends SqlMapClientDaoSupport {
@Autowired
public BoardDao(SqlMapClient sqlMapClient) {
super();
setSqlMapClient(sqlMapClient);
}
..
}
또는 setter로 다음과 같이 추가하셔도 됩니다.
@Resource(name = "sqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}
그럼.. 즐거운 하루되십시오.
감사합니다.
DAO에서 SqlMapCLientDaoSupport를 직접 extends 하시는 경우는
sqlMapClient를 직접 Injection 해주셔야 하는데 다음과 같은 형태로 하시면 됩니다.
@Repository("BoardDao")
public class BoardDao extends SqlMapClientDaoSupport {
@Autowired
public BoardDao(SqlMapClient sqlMapClient) {
super();
setSqlMapClient(sqlMapClient);
}
..
}
또는 setter로 다음과 같이 추가하셔도 됩니다.
@Resource(name = "sqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}
그럼.. 즐거운 하루되십시오.
감사합니다.