今天工作遇到一个难缠的bug,浪费了2个小时终于解决。
问题描述:对资源的管理中用到关键字查询以及分页查询。视图控制器用到struts2,数据存储用spring的data-mongodb来存储数据以及查询数据。但是发现一个问题,在用分页查询时能查询出所有记录,然后用关键字查询获取查询内容后,在用分页查询但是只能获取关键查询的数据,其他数据死活查询不出来。开始我以为是自己前端有逻辑问题,但是我用其他的浏览器操作同样出问题。因此知道问题出在后台代码。开始以为是不是数据有缓存,但是其他模块也这样实现没问题,纠结了半天,最后我对比了其他模块在struts.xml配置中差异,发现其他模块的action中spring配置有scope=''propotype",但是又想如果是线程安全问题,也不应该是因为action,给数据有关应该是service层或是dao层,但是还是这样尝试修改一下,奇迹出现了,问题解决了。开始我以为struts2是线程安全的他通过过滤每次请求都会实例化,交给spring管理应该默认都是propotype.所以我思考问题所在。最后终于明白了。 问题