1.写一个类继承于QuartzJobBean,并实现它的方法。
2.为了解决后续出现定时器执行两次的问题,新建一个applicationContext-quartz.xml 文件用来配置。
3.到web.xml文件再配一个applicationContext-quartz.xml
对应代码:
1. public class Job1 extends QuartzJobBean {
private int timeout;
private static int i = 0;
//调度工厂实例化后,经过timeout时间开始执行调度
public void setTimeout(int timeout) {
this.timeout = timeout;
}
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("------定时任务执行中…");
}
}
2. <!-- 定时器开始 -->
<bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.yxw.util.Job1" />
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="0" />
</map>
</property>
</bean>
<bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="job1"></property>
<property name="cronExpression" value="0 15 0 24 * ?"></property> //这里是设置每个月24日0点15分执行,时间设置可以去网上查
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
<property name="triggers">
<list>
<ref bean="CronTriggerBean" />
</list>
</property>
</bean>
<!-- 定时器结束 -->
3. web.xml文件配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext.xml,classpath:config/applicationContext-quartz.xml</param-value>
</context-param>