0
我想在Spring Boot中創建計劃任務。我已經有這方面的定義,它看起來像這樣:使用現有控制器的Spring Boot中的計劃任務
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static long count = 0;
@Autowired
private TaskRepository taskRepository;
@Scheduled(fixedRate = 15000)
public void createTasks() {
count++;
Task t = new Task();
t.setTitle("Scheduled Task " + count);
//TaskController tc = new TaskController();
//tc.create(t);
taskRepository.saveAndFlush(t);
log.info("A new scheduled task has been created!");
}
}
這工作都很好,但我直接使用界面我的倉庫。我不想直接使用存儲庫,而想使用現有的控制器類。我有一個控制器類,它看起來是這樣的:
@RestController
@RequestMapping("api/v1/")
public class TaskController {
@Autowired
private TaskRepository taskRepository;
@RequestMapping(value = "tasks", method = RequestMethod.POST)
public Task create(@RequestBody Task task) {
return taskRepository.saveAndFlush(task);
}
}
那麼,怎樣才能其實我稱這種現象爲ScheduledTasks
類創建任務創建方法?如果我嘗試像new TaskController()
那樣執行某些操作,則會收到空引用錯誤。任何想法如何解決這個問題?
儘管技術上有效,但在Controller類中放入這種功能似乎是非常錯誤的。控制器唯一需要關注的是用戶界面。 –
更好的是將常用功能提取到服務類中,並在控制器和任務中使用該服務! ✅ – Strelok
我同意這不是一個好的設計,應該有一個關注點分離,並且您可能想要在Service類中使用服務構造型來抽象登錄,並且同時使用ScheduledTask和Controller。該服務(自動佈線)。 – Oliver