Почему мое поле Spring @Autowired имеет значение null?

Примечание: это должно быть каноническим ответом на общую проблему.

У меня весна@Service учебный класс (MileageFeeCalculator) который имеет@Autowired поле (rateService), но полеnull когда я пытаюсь использовать это. Журналы показывают, что обаMileageFeeCalculator боб иMileageRateService боб создаются, но я получаюNullPointerException всякий раз, когда я пытаюсь позвонитьmileageCharge метод на моем сервисном бобе. Почему нетт пружина автопроводка в поле?

Класс контроллера:

@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; // 

Ответы на вопрос(13)

Ваш ответ на вопрос