java.lang.IllegalArgumentException: No SqlMapClient specified
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:166)
at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
at com.raycloud.dao.impl.ItemCheckTaskDaoImpl.queryItemCheckTask(ItemCheckTaskDaoImpl.java:66)
at com.raycloud.thread.ItemCheckThread.run(ItemCheckThread.java:57)
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:166)
at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
at com.raycloud.dao.impl.ItemCheckTaskDaoImpl.queryItemCheckTask(ItemCheckTaskDaoImpl.java:66)
at com.raycloud.thread.ItemCheckThread.run(ItemCheckThread.java:57)
at Java.lang.Thread.run(Thread.java:619)
在做spring + ibatis整合时,容易报此类异常
原因是在创建DAO对象时使用了 new xxxDaoImpl()的方法应该用使用以下方式
//获取 servletContext
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
//获取bean -
WebApplicationContext beanFactory = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
IpcParkSpaceDao ipcParkSpaceDao = (IpcParkSpaceDao) beanFactory.getBean("ipcParkSpaceDaoImpl");
//获取bean -
WebApplicationContext beanFactory = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
IpcParkSpaceDao ipcParkSpaceDao = (IpcParkSpaceDao) beanFactory.getBean("ipcParkSpaceDaoImpl");
//spring 配置文件
<bean id="ipcParkSpaceDaoImpl" class="com.giraffe.ipmsm.dao.impl.IpcParkSpaceDaoImpl">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>