记一个Springboot中controller层注入service层对象报空指针异常

一次在自测的时候发现接口报错,debug时发现service为null,起初是以为注解失效,但是发现同一个类中其他接口却是正常的,service注入也是正常的。仅仅是报错的接口无法注入service。

最后通过发现报错的接口是因为定义方法的关键字写成了private,其他正常的接口都是public。

问题分析: springMVC是通过动态代理生成接口方法对象的,而动态代理是通过反射获取方法,springMVC是通过普通的反射获取方法对象,只能得到public或者protect关键字的方法,对于private关键字修饰的方法是无法通过反射得到的,因此无法生成代理对象交给IOC,所以不能被springIOC管理,也就不能通过spring的注解获取service对象。


版权声明:本文为weixin_45826787原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。