
比如在接口中使用了new的方式则里面用到的东西都不会被spring容器管理代码Resource private FactoryMonitorService factoryMonitorService; private final RestTemplateHelper restTemplateHelper; PostMapping(/test) public ListMachineMergedVo test() { final FactoryMonitorService factoryMonitorService new FactoryMonitorService(); final ListMachineMergedVo p1LAOI01 factoryMonitorService.machineDetail(P1LAOI01); return p1LAOI01; }此时的emapMachineService是为null的并没有被注入进来Autowired private EmapMachineServiceImpl emapMachineService; /** * 机台详情 */ public ListMachineMergedVo machineDetail(String machineId) { ListEmapMachine machineDetailList emapMachineService.getMachineDetail(machineId); final ListMachineMergedVo machineMergedVos mergeMachineList(machineDetailList); return machineMergedVos; }问题分析问题分析第 ① 行通过Resource注入的factoryMonitorService是 Spring 容器创建并装配好的对象其内部的emapMachineService已经被自动注入。第 ② 行你重新定义了一个同名的局部变量并用new创建了一个全新的FactoryMonitorService实例。这个对象是纯粹的 Java 对象Spring 对它一无所知因此它内部的emapMachineService字段保留为null调用时自然就出现NullPointerException。