当前位置: 代码迷 >> J2EE >> spring 动态注解任务调度解决方法
  详细解决方案

spring 动态注解任务调度解决方法

热度:75   发布时间:2016-04-19 21:57:45.0
spring 动态注解任务调度
现有需求是,从数据库中取出执行任务的时间。
可能存在多条。

现在使用的是Spring注解的方式来执行任务调度!

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
 * 我的时间任务测试类
 * 类描述:
 * @author 何祖文
 * 创建时间:2014-5-26 下午4:30:27
 *
 */
@Component("myTimeTestJob")  
public class MyTimeTestService {
@Scheduled(cron = "0/3 * * * * ?")  
public void job() {  
System.out.println("任务进行中。。。");  
}
}

问下如果我要执行时间为动态去数据读取的话,我该怎么弄呢?
求科普..........

--------------------
PS:急求!!!

------解决方案--------------------
简单点,用linux的crontab去调你的java程序算了,那个简单,支持修改的。
------解决方案--------------------
参考
------解决方案--------------------
这个还是用程序来写吧 ,别用注解了。
------解决方案--------------------
自己写了一个测试的

public static void main(String args[]) {
try {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail("CronTirgger",Scheduler.DEFAULT_GROUP, CronTirgger.class);
jobDetail.getJobDataMap().put(" type ", " FULL ");
CronTrigger trigger = new CronTrigger("CronTirgger",Scheduler.DEFAULT_GROUP);
/**这里你可以写一个专门获取表达式的工具类 */
trigger.setCronExpression("0 40 8 * * ?");
sched.scheduleJob(jobDetail, trigger);
// sched.start();
} catch (Exception e) {
e.printStackTrace();
}

}

------解决方案--------------------
按理说这个肯定是正确的,动态设置,
            trigger.setCronExpression(cronExpression);  
            scheduler.rescheduleJob("testTrigger", Scheduler.DEFAULT_GROUP, trigger);  


你外面的是resetJob,会不会造成里面的rescheduleJob,导致死循环。
是否可以将时间距离设置大一点,然后debug下
------解决方案--------------------
这个版主很不错哦 
------解决方案--------------------
原来我记得我做个一个项目,就是用lz这种方式。。客户在页面上可配置型执行job 的。。不过忘记怎么实现的了。。
  相关解决方案