您的位置:首页 > 移动开发

奇葩问题:spring+mybaits项目突然出现其中一些Mapper类找不到

2015-07-16 13:50 501 查看
一、问题现象

1,No bean named 'bomManageMapper' found in org.springframework.beans.factory.support.DefaultListableBeanFactory@.........

2,我把代码中引用的bomManageMapper全部注释掉,又会出现另外一个Mapper对象找不到

3,但是奇怪的是,有两个项目启动的时用到的Mapper对象可以找到,发现这两个Mapper对象是在项目的core包下面,而其他找不到的Mapper对象都在interfaces包下面;

二、寻找答案

1,怀疑是昨天修改了什么东西,导致的这个问题(具体也记得不清楚了,所以版本控制真的很重要,而且做好是每天都要提交);

2,试图还原昨天的修改,删除一些新增内容,但是问题依旧;

就这样折腾了一上午;

三、解决

打开了spring的配置文件看看,有这一行,扫描Mapper和dao类:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"    p:basePackage="com.skysport.*.dao" p:sqlSessionFactoryBeanName="sqlSessionFactory" />


就是这个dao,突然想到,昨天把interfaces的包中的‘dao’文件夹重命名为‘mapper’,而core包中的还是dao包,好吧,问题原因找到了。

重命名core包中的dao包为mapper包,重启服务,恢复正常;

四、一点思考:

1,关于定位问题:

如果之前没有出现,而是做了某些修改后,才出现的问题,那么肯定是修改动作导致的。

2,关于版本控制:

养成按天提交代码的习惯,这样可以对比出来每天修改的内容,便于定位问题;

3,关于修改:

在修改一项内容时,一定要评估它带来的影响有多大,我觉得可以从两个角度去衡量:

a),可量化的:修改一项内容,如果直接影响到很多文件修改,那么一定要慎重,要评估风险(例如:是否每个涉及到的地方都修改了)

b),不可量化:例如修改了代码的加锁机制,可能影响的就一、两个类,那么就要靠开发者的自身能力和足够的测试去规避风险了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: