代码之家  ›  专栏  ›  技术社区  ›  PacificNW_Lover

尝试执行Spring JDBC查询时获取NPE[duplicate]

  •  0
  • PacificNW_Lover  · 技术社区  · 6 年前

    注意:这是一个常见问题的规范答案。

    @Service 阶级( MileageFeeCalculator @Autowired 字段( rateService null 当我试着用它的时候。日志显示 里程计算器 豆子和 MileageRateService 正在创建bean,但我得到一个 NullPointerException 每当我试图打电话给 mileageCharge 方法。为什么Spring不能自动布线?

    控制器类:

    @Controller
    public class MileageFeeController {    
        @RequestMapping("/mileage/{miles}")
        @ResponseBody
        public float mileageFee(@PathVariable int miles) {
            MileageFeeCalculator calc = new MileageFeeCalculator();
            return calc.mileageCharge(miles);
        }
    }
    

    服务等级:

    @Service
    public class MileageFeeCalculator {
    
        @Autowired
        private MileageRateService rateService; // <--- should be autowired, is null
    
        public float mileageCharge(final int miles) {
            return (miles * rateService.ratePerMile()); // <--- throws NPE
        }
    }
    

    里程计算器

    @Service
    public class MileageRateService {
        public float ratePerMile() {
            return 0.565f;
        }
    }
    

    当我试图 GET /mileage/3 ,我得到一个异常:

    java.lang.NullPointerException: null
        at com.chrylis.example.spring_autowired_npe.MileageFeeCalculator.mileageCharge(MileageFeeCalculator.java:13)
        at com.chrylis.example.spring_autowired_npe.MileageFeeController.mileageFee(MileageFeeController.java:14)
        ...
    
    0 回复  |  直到 7 年前