2015-08-16 55 views
1

我有Spring调度器,它从属性文件中读取配置。我需要从数据库中读取此配置。配置Spring Scheduler在运行时基于db值

下面给出的是调度

@Scheduled(initialDelay = 2000, fixedDelayString = "${value for first   
taskfrom db}") 
public void doFirsttask() { 
    //do sceduled task 
} 

@Scheduled(initialDelay = 2000, fixedDelayString = "${value from  
    second task from db}") 
public void doSecondtask() { 
    //do sceduled task 
} 

什么是可能的方式来设置它的结构呢? 也有可能重新安排事情的运行时间,如果值在数据库中更改?

+0

你有没有得到任何解决方案...我还需要从数据库中获取调度程序计时 – Manglesh

回答

2

您需要从代码而不是从注释执行此操作。春季docs是一个很好的信息来源。

在您的代码中,您需要生成Runnable,然后将它与一个触发器一起传递给Scheduler。例如

TaskScheduler scheduler = //get instance from Spring; 
scheduler.schedule(runnableWithYourTask, new PeriodicTrigger(/* whatever you need here*/)); 

您可能需要有一个Spring bean侦听的ContextStartedEvent事件和

  • 查询DB获得的时期。
  • 安排任务。 (如果你想取消任务,你可能想保留对ScheduledFuture的引用)
相关问题