我的数据库中有一个“广告”实体,其中包含activeUntil
字段。
现在,我想在我的后端创建一个方法,它将在Date activeUntil
属性中指定为值的日期执行其逻辑。基本上我想发送过期广告的用户。可悲的是,我不知道该怎么做。 Spring Boot是否提供类似的功能?提前谢谢!
答案 0 :(得分:3)
使用spring boot内置的计划任务功能。您可以使用CRON格式指定希望特定函数运行的日期和时间。
以下示例计划在每小时过去15分钟后运行,但仅限于工作日的9到5个“营业时间”。
scheduler.schedule(task, new CronTrigger("0 15 9-17 * * MON-FRI"));
在您的特定情况下,您的预定功能会从数据库中提取已过期的广告实体,并运行您要在每个已过期广告实体上执行的方法。
有关详细信息,请参阅文档:
https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling
有关CRON语法的更多信息:
答案 1 :(得分:1)
Spring有@EnableScheduling和@Scheduled用于常规任务。见https://howtodoinjava.com/spring/spring-boot/enable-scheduling-scheduled-job-example/
请注意,@ Sherduled支持cron表达式。对于@Scheduled使用的cron表达式,请参阅https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html
但是,您要根据某些动态日期询问规范任务。如果受到@EnableScheduling和@Scheduled的限制,这对我来说似乎是不可能的。相反,尝试使用spring-boot 2.0 Reactive Web。 Flux.interval(持续时间延迟,持续时间计时器)。
请注意,学习Reactive堆栈大约需要3到7天。如果您不想投入时间,只需创建自己的线程即可完成您想要的任何操作。