Controller层调用Service的方法报空指针异常NullPointException。【已解决】

今天在写代码过程中遇到一个很坑的问题,当然也是自己粗心造成的。先直接说造成问题的原因:就是controller中的接口方法定义成了private类型了!特别不应该的一个错误,但是在当时很难想到的问题,怎么都想不到接口方法会被我写出private的。为了防止再犯这种低级错,所以记录下来警醒自己。当时的情况如下。

当时在写一个需求,需要新增接口,我就日常的在controller中加了一个对应的方法,给前端调用,方法里也是正常的一层一层的往下调用biz -> service -> dao。就一个很简单的查询接口,整体没有什么问题。当我启动项目,用postman测试的时候,我一调接口,很快啊,马上就抛错空指针异常了。我当时还想着是不是哪个查询的地方没做判空处理,但是一看报错日志,竟然是controller层报出来的空指针。心想着这controller层总共也就三行代码啊。然后我就在那三行里唯一可以打断点的那一行加了个断点,用postman再调用一次,进了断点之后,就看见biz对象为空了。当时就纳闷了,怎么这个还会空指针,写了这么多年的接口,还是第一次碰见。然后就下意识的把@Autowired换成@Resource,试了一下还是没用。然后我又开始从biz层,一层层的往下去找,看看有没有其他依赖的地方属性注入为空了。就这样找原因找了很久,一直都没有找到。都快找崩溃了,甚至找到spring源码里面去了。发现启动的时候在controller注入的那个biz竟然是有的。但是在controller的方法里就为null了,很是奇怪。然后又去百度,就搜索我标题这种类似的问题,没想到这一搜还真被我搜到了(百度真强大)。看到有个网友发了说什么接口方法要从private改成public ,当时立马就去检查一下。发现还真是,我把接口方法定义成private类型了。改回public之后再次启动项目,调用接口一试,还真就好了。当时我也是一脸的无语,好吧,被这种低级失误浪费了这么久时间。不过说回来还是我对cglib的动态代理理解不够,后面要去加强这方面的学习了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值