I'm using SpringBatch but I cant find any document or tutorial about Spring's @Scheduled , showing it being used along side with some controller method (annotated with @GetMapping, @PostMapping).
For example, I have this controller method
@Scheduled(cron = "0 */5 * ? * *")
@PostMapping("/create-progress-data")
public ResponseEntity<?> createSomething(@Request Something request) { }
I can easily create another method that do the same thing as in the body of createSomething then put it in a @Component or a Service, but between doing that and just applying @Scheduled on top of the controller method, I don't know which one is better.
I can see that:
-
Using
@Scheduled: code is minimal, works just find. But we're kind of using the controller method in the wrong way. However I don't see it violates Single responsibility point in design pattern. -
Create another method and put it in other
@Componentor@Service: separate the duty of the controller method and the cron job but duplicate the code.
Ps: I need to implement it like this because we need to support two ways to trigger the job. Either via api call (controller method), or periodically (with @Scheduled).
Please notice in this case the code of controller method and the expected cron job is the same.
Aucun commentaire:
Enregistrer un commentaire