最近为了部署方便,尝试将项目的依赖与配置文件分开进行打包,可以参考Spring Boot分开打包依赖及配置文件 - 香草物语 (xiangcaowuyu.net)
项目部署之后,试了一下,没有报错,但是后面在用的时候,有一个接口始终报空指针,通过日志分析,是服务层没有注入导致的。
接口通过@Resource
注入的
@Resource
private ICarQuotationPriceHistoryService carQuotationPriceHistoryService;
首先,既然别的接口都不存在问题,那么可以断定出现问题不是我们分打开打包依赖导致的。其次,在Idea中直接运行时,接口也不报错,说明方法本身不存在问题(姑且这么说吧),检查了配置、包名等地方,都没有发现问题。
既然问题出现在这个方法,那说明肯定是这个方法出现了问题,检查了方法的注解、参数等,也都没发现问题,就在检查方法属性的时候,突然发现问题了,这个方法没有public
,其他方法都是有pubic
的,方法加上public
后,问题解决
其实这个地方,只是粗心大意了,忘记写public
了。我们都知道,当一个方法没有修饰符时,默认就是default
,default
通常称为默认访问模式。该模式下,只允许在同一个包中进行访问。这也就为什么我们在不拆分依赖的时候,接口能正常访问,当我们拆分依赖后,因为我们这个是一个单独的模块(依赖),这个接口就无法访问了。
通过这件事,得到了两个教训:1.做事不可粗心大意,像controller的方法,记得加public
修饰符。2.遇到事情不要被表象迷惑,比如这种注入是null
的,我们一般首先想到的是包名、扫描配置、注解上出现问题,往往不会考虑方法修饰符出现问题了。
评论 (0)