一.dubbo服务调用测试报错
在看到服务调用测试这里的时候遇到了许多问题,其中一类报错如下:
Caused by: java.lang.IllegalArgumentException: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Wrong namespace. Expected 'com.taotao.mapper.TbContentCategoryMapper' but found 'com.taotao.com.taotao.mapper.TbContentCategoryMapper'.
at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:100)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 21 more
由逆向工程生成的代码原拷贝目录为“com.taotao.mapper”,该问题指出了这类代码中mapper映射文件的名称空间的错误。在第一次遇到该问题时,试着把原拷贝目录从“com.taotao.mapper”更改为了“mapper”,继而引发了bean注入失败的连锁问题。
在解决bean注入失败的问题里往返几次后,最终认识到问题由本次更改目录引发,其实际原因是,逆向工程生成的代码的mapper类文件,本身的名称空间为“com.taotao.mapper.*”,在导入到工程中的拷贝目录为“com.taotao.mapper”后,mapper类的名称空间自动更新为了“com.taotao.com.taotao.mapper.*”,故正确的解决方案是:
手动将mapper类文件的名称空间由“com.taotao.com.taotao.mapper.*”,删去前缀“com.taotao.”,变为“com.taotao.mapper.*”
- 原错误位置截图如下:
- 更改后截图如下:
需注意更改目录下所有mapper映射文件的名称空间。