在我的Spring MVC应用程序中,我需要安排具有特定日期和任务的任务。时间。我必须安排发送一封由客户动态配置的电子邮件。在Spring @Schedule中有注释,但是如何在每次使用任何日期和动态时动态更改值。时间。
感谢任何帮助。
答案 0 :(得分:3)
您应该尝试TaskScheduler
,请参阅javadoc here:
private TaskScheduler scheduler = new ConcurrentTaskScheduler();
@PostConstruct
private void executeJob() {
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// your business here
}
}, INTERVAL);
}
答案 1 :(得分:0)
参考Spring Task Execution and Scheduling
示例注释
@Configuration
@EnableAsync
@EnableScheduling
public class MyComponent {
@Async
@Scheduled(fixedDelay=5000, repeatCount=0)
public void doSomething() {
// something that should execute periodically
}
}
我认为 repeatCount = 0 会使该函数只执行一次(尚未测试)
Quartz调度程序http://www.mkyong.com/spring/spring-quartz-scheduler-example/
的完整示例您需要按如下方式引入XML配置
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>}
答案 2 :(得分:0)
您可以在标准Java API中轻松实现此目的,方法是在创建时间任务和客户输入目标日期之间的时差安排任务。只需将此差异作为参数delay
。
<强>的ScheduledThreadPoolExecutor 强>
schedule(Callable<V> callable, long delay, TimeUnit unit)
创建并执行在给定延迟后启用的ScheduledFuture。
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
创建并执行在给定延迟后启用的一次性动作。
因此,您必须向此服务提交Runnable或Callable。
您可以参考此答案进行日期之间的计算: