2015-08-16 119 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的引用)
相關問題