Примечание. Это канонический ответ на распространенную проблему.
У меня есть класс Spring @Service (MileageFeeCalculator), который имеет поле @Autowired (rateService), но поле имеет значение null, когда я пытаюсь его использовать. Журналы показывают, что создаются как bean-компонент MileageFeeCalculator, так и bean-компонент MileageRateService, но я получаю исключение NullPointerException всякий раз, когда пытаюсь вызвать метод mileageCharge в моем сервисном bean-компоненте. Почему 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; //
Подробнее здесь: https://stackoverflow.com/questions/198 ... field-null