我有一个Spring @Service类(MileageFeeCalculator)有一个@Autowired字段(rateService),但字段是null当我尝试使用它。日志显示MileageFeeCalculatorbean和MileageRateServicebean都被创建,但是NullPointerException每当我尝试调用mileageCharge我的服务bean上的方法时,我都会得到它。Spring为什么不自动装配这个字段?
控制器类:
@Controllepublic class MileageFeeController { @RequestMapping("/mileage/{miles}") @ResponseBody public float mileageFee(@PathVariable int miles) { MileageFeeCalculator calc = new MileageFeeCalculator(); return calc.mileageCharge(miles); }}服务等级:
@Servicepublic class MileageFeeCalculator { @Autowired private MileageRateService rateService; // <--- should be autowired, is null public float mileageCharge(final int miles) { return (miles * rateService.ratePerMile()); // <--- throws NPE }}应该自动装入的服务bean,MileageFeeCalculator但不是:
@Servicepublic 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)
...
相似问题