1.首先配置quartz.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 被执行类 --> <bean id="testQuarzt" class="com.sei.job.ScheduleInfoService"> <property name="scheduler" ref="schedulerFactory" /> </bean> <!-- 将testQuarzt注入到job中 --> <bean id="testQuartzJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testQuarzt" /> <property name="targetMethod" value="loadJob" /> <property name="concurrent" value="false" /> </bean> <!-- 将job注入到定时触发器 --> <bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testQuartzJob" /> <property name="cronExpression"> <value>0/1 * * * * ?</value> </property> </bean> <!-- 将触发器注入任务工程 --> <bean id="schedulerFactory" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testTrigger" /> </list> </property> </bean> </beans>
2.在web.xml中引入上述xml
3.ScheduleInfoService中调用loadJob,job中写入执行的任务
4.在controller中通过发请求的方式改变策略。
import java.text.ParseException; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.CronTriggerBean; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class TestController { @Autowired private Scheduler scheduler; // 设值注入,通过setter方法传入被调用者的实例scheduler public void setScheduler(Scheduler scheduler) { this.scheduler = scheduler; } @RequestMapping(value="/test1",method = RequestMethod.GET) @ResponseBody public String test1() throws SchedulerException, ParseException{ CronTriggerBean trigger = (CronTriggerBean)scheduler.getTrigger("testTrigger",Scheduler.DEFAULT_GROUP); trigger.setCronExpression("0/5 * * * * ?"); scheduler.rescheduleJob("testTrigger", Scheduler.DEFAULT_GROUP, trigger); return "ok"; } }
//可能出现注入失败等问题,对于配置文件,对于新手来说,不太懂springMVC得整个过程,就把配置文件都写成application*的形式,初始加载时都扫描了。