我有

@Component
public class WeeklyReport implements CommandLineRunner {
    @Autowired
    private RecipientMapper recipientMapper;

    @Override
    public void run(String... args) throws Exception {
        String[] recipients = recipientMapper.all();




@Controller
public class MyController extends BaseController implements ErrorController {
    @RequestMapping(value="/admin/weekly-report-run", method=RequestMethod.POST)
    public ModelAndView weeklyReportRun(WeeklyReport weeklyReport) {
        try {
            weeklyReport.run();


但是我在receiveMapper.all()处收到了NullPointerException。我如何实例化CommandLineRunner,以便所有@Autowired字段都自动连接,并且可以通过从命令行以及从控制器调用代码来重用代码?我认为,通过将其指定为控制器方法的参数,Spring Boot可以实例化正确的对象以及所有子字段。

春季靴1.5.19。

最佳答案

我加了

@Autowired
private WeeklyReport weeklyReport;


对于控制器,并将其从控制器的方法参数中删除,它可以正常工作。动作方法可以看到自动连接的类变量。

09-05 21:02