1、繼承式Quartz定時器
1.建立一個繼承自QuartzJobBean的類,並重寫executeInternal方法
public class MyJob extends QuartzJobBean{
private int timeout;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("如今時間爲: " + (new Date()));
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
}
2.建立調度器JobDetailBean
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.JobDetailBean">
<!--指定調度器的jobClass屬性的值爲QuartzJobBean的子類-->
<property name="jobClass">
<value>com.my.pojo.MyJob</value>
</property>
<!--設置開啓時間-->
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="0"></entry>
</map>
</property>
</bean>
3.建立調度觸發器CronTriggerBean
<bean id="trigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!--將調度器賦值給觸發器的jobDetail屬性-->
<property name="jobDetail" ref="jobDetail"></property>
<!--設置定時時間-->
<property name="cronExpression">
<value>0-59 * * * * ?</value>
</property>
</bean>
4.建立觸發器調度工廠SchedulerFactoryBean
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="trigger"/>
</list>
</property>
</bean>
####測試類
public static void main(String[] args) throws SchedulerException {
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:container.xml");
JobDetail job = (JobDetail) ac.getBean("jobDetail");
CronTriggerBean trigger = (CronTriggerBean) ac.getBean("trigger");
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
2、非繼承式Quartz定時器
1.聲明做業類MyJob
<bean id="job" class="com.my.pojo.MyJob"></bean>
public class MyJob {
public void doJob(){
System.out.println("如今時間爲: " + (new Date()));
}
}
此類能夠是任意類型的類
2.配置做業類MethodInvokingJobDetailFactoryBean
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--將以前聲明的要運行的類賦值給此類的targetObject屬性-->
<property name="targetObject" ref="job"></property>
<!--指定目標類中被管理的方法,對應屬性名爲targetMethod-->
<property name="targetMethod" value="doJob"></property>
</bean>
3.配置觸發器CronTriggerBean
<bean id="trigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!--將做業類管理器交與觸發器管理-->
<property name="jobDetail" ref="jobDetail"></property>
<!--設置觸發器運行的時間-->
<property name="cronExpression">
<value>1-50 * * * * ?</value>
</property>
</bean>
4.配置調度工廠SchedulerFactoryBean
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!--將觸發器交與調度工廠管理-->
<property name="triggers">
<list>
<ref local="trigger"/>
</list>
</property>
</bean>
####測試類
public static void main(String[] args) throws SchedulerException {
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:container.xml");
JobDetail job = (JobDetail) ac.getBean("jobDetail");
CronTriggerBean trigger = (CronTriggerBean) ac.getBean("trigger");
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
}
spring