今天新版本已经进入测试阶段了,测试大兄弟突然告诉我有个以前调通的接口报错了。虽然那接口不是我开发的,但手头上正好没有什么活,就暂且看一看。
看下日志,报的是空指针。
但奇怪的是没有看到指向业务层的行数,只有一个controller层的行数日志,一时间不好判断问题来源,拿到参数后debug测试一下,找到问题了。
竟然是注入的service为null,这真是很奇怪了,这个注入很久很久很久以前就用过了,怎么突然就注入失败了呢!验证猜想,调用一个简单的查询方法,发现成功了。这时就纳闷了,百度“service注入失败”,也跟我的情况大相径庭。采用各种注释,替换代码内容的方式验证,终于是发现了,竟然是接口用的private导致的,用public的接口都是正常可以注入的。
首先用private肯定是手误,一般都是用public,但以前能用,这次突然调不通了,肯定还是有什么改动导致的。百度了下“controller私有方法”,检查了下这个类的最近改动,发现是同事添加了一个aop的自定义注解,把注解注释掉,发现private也可以正常注入访问。
虽然找到了问题,但并不知道原因,百度找了找,也没发现对原理方面的解读。只能是暂且记录下来,待遥遥无期的哪一天再来补充了。