1、xml文件的配置
<span style="white-space:pre"> </span><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<context:component-scan base-package="com.car.service">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="testTrigger"/>
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testJobDetail"/>
<!-- 10 seconds -->
<property name="startDelay" value="10000" />
<!-- 刚开始设置成了5秒执行一次,根据自己的项目需求,可以先定义成每天定时执行 -->
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testJob"/>
<property name="targetMethod" value="execute"/>
<property name="concurrent" value="false"/>
</bean>
<span style="white-space:pre"> </span><bean id="testJob" class="com.TestJob"/>
2、TestJob里面存放的是定时执行的任务
public class TestJob{
public void execute(){
// TODO Auto-generated method stub
System.out.println("执行任务 ,当前执行时间 :: " + (new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
}
}
3、具体实现方法
定时任务表达式参考:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html
public void retScheduleJob(String str) throws SchedulerException, ParseException {
TriggerBuilder<CronTrigger> tb = newTrigger.getObject()
.getTriggerBuilder();
// 表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder
.cronSchedule(str);//此处字符串就是前台传过来的定时执行的时间!!
// 按新的cronExpression表达式重新构建trigger
Trigger trigger = newTrigger.getObject().getTriggerBuilder()
.withIdentity(newTrigger.getObject().getKey())
.withSchedule(scheduleBuilder).build();
System.out.println("动态改变执行时间为:"+str);
myScheduler.getObject().rescheduleJob(newTrigger.getObject().getKey(),
trigger);
}