一 配置xml如下:
<!-- 定时任务配置 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true"> <!-- <property name="triggers"> <list> <ref bean="t1" /> </list> </property> --> </bean>
<!-- 配置作业类JobDetailBean --> <bean id="job1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="test.Job1"></property> <property name="jobDataAsMap"> <map> <entry key="timeout" value="0"></entry> </map> </property> </bean> <!-- 配置作业调度的触发方式(触发器) --> <!-- 第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。 --> <!-- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="job1" /> <property name="cronExpression" value="0 0 12 * * ?" /> </bean> --> <!-- 第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="job1" /> <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 --> <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 --> </bean>
二 手动获取scheduler调度对象,触发SimpleTriggerBean对象,和作业类JobDetailBean对象
public class TestJob { public static QuarzJobHelper jobHelper; /**任务调度对象*/ private static Scheduler scheduler; static AbstractApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring/applicationContext.xml"); static{ jobHelper = (QuarzJobHelper)context.getBean("jobHelper"); /**任务调度对象*/ scheduler = (Scheduler)context.getBean("scheduler"); } public static void main(String[] args) { //从spring中获取trigger Trigger trigger = (Trigger)context.getBean("cronTrigger"); //获取job作业类 JobDetail detail = (JobDetail)context.getBean("job1"); try { //新增job scheduler.scheduleJob(detail, trigger); System.out.println(detail.getName()+","+detail.getGroup()); Thread.sleep(9000); //删除job scheduler.deleteJob(detail.getName(), detail.getGroup()); //定时任务销毁 scheduler.shutdown(); } catch (Exception e) { e.printStackTrace(); } } }