一、问题现象
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类:
就是这个dao,突然想到,昨天把interfaces的包中的‘dao’文件夹重命名为‘mapper’,而core包中的还是dao包,好吧,问题原因找到了。
重命名core包中的dao包为mapper包,重启服务,恢复正常;
四、一点思考:
1,关于定位问题:
如果之前没有出现,而是做了某些修改后,才出现的问题,那么肯定是修改动作导致的。
2,关于版本控制:
养成按天提交代码的习惯,这样可以对比出来每天修改的内容,便于定位问题;
3,关于修改:
在修改一项内容时,一定要评估它带来的影响有多大,我觉得可以从两个角度去衡量:
a),可量化的:修改一项内容,如果直接影响到很多文件修改,那么一定要慎重,要评估风险(例如:是否每个涉及到的地方都修改了)
b),不可量化:例如修改了代码的加锁机制,可能影响的就一、两个类,那么就要靠开发者的自身能力和足够的测试去规避风险了。