如何使用spring 定时调度 【 Spring+Quartz实现定时任务 】
2016-11-11 09:55
816 查看
1.Spring整合Quartz实现定时任务步骤很简单,大致需要经过如下几步:创建任务(Job)、配置JobDetail、配置触发器(Trigger)、配置SchedulerFactoryBean
2.首先使用Maven创建一个web项目并引入Spring和quartz的依赖(习惯使用这种开发模式了,当然不使用Maven也可以)
需要引入的依赖包如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
增加完Spring和Quartz的依赖包之后,就需要创建Spring配置文件,并在web.xml文件中引入Spring支持。
----web.xml里面
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/ebs-servlet.xml,
classpath:spring/ebs-security.xml
</param-value>
</context-param>
---ebs-servlet.xml里面
<pre name="code" class="java"> <import resource="classpath:spring/spring-quartz-scheduler.xml" />
---Spring-Quartz.xml里面
<!-- ======================== 调度触发器 ======================== -->
<bean id="restoreStockJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="restoreStockJob" />
<property name="cronExpression">
<value>0 0/1 * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="restoreStockJobTrigger"/>
<ref local="noticeTrigger"/>
<ref local="loginclearTrigger"/>
<ref local="LhtxTrigger"/>
<ref local="SynchroXsddFromErpTrigger"/>
<!-- -->
</list>
</property>
<property name="schedulerContextAsMap">
<map>
<!-- spring 管理的service需要放到这里,才能够注入成功 -->
<entry key="gwcService" value-ref="gwcService"/>
<entry key="khxsddService" value-ref="khxsddService"/>
<entry key="xtcsService" value-ref="xtcsService"/>
<entry key="xsddService" value-ref="xsddService"/>
<entry key="dubboService" value-ref="dubboService"/>
<entry key="thddService" value-ref="thddService"/>
</map>
</property>
<property name="jobFactory">
<bean class="cn.sckj.ebs.common.job.MyJobFactory" />
</property>
</bean>
创建job类
public class RestoreStockJob extends QuartzJobBean {
private XsddService xsddService;
@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
// 开独立线程执行库存还原操作
Thread restoreSCS = new Thread(new Runnable() {
@Override
public void run() {
try {
// 还原购物车库存
xsddService.restoreShoppingCartStock();
} catch (Exception e) {
e.printStackTrace();
}
}
});
restoreSCS.start();
Thread restoreOS = new Thread(new Runnable() {
@Override
public void run() {
try {
// 还原订单库存
xsddService.restoreOrderStock();
} catch (Exception e) {
e.printStackTrace();
}
}
});
restoreOS.start();
}
public void setXsddService(XsddService xsddService) {
this.xsddService = xsddService;
}
}
2.首先使用Maven创建一个web项目并引入Spring和quartz的依赖(习惯使用这种开发模式了,当然不使用Maven也可以)
需要引入的依赖包如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
增加完Spring和Quartz的依赖包之后,就需要创建Spring配置文件,并在web.xml文件中引入Spring支持。
----web.xml里面
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/ebs-servlet.xml,
classpath:spring/ebs-security.xml
</param-value>
</context-param>
---ebs-servlet.xml里面
<pre name="code" class="java"> <import resource="classpath:spring/spring-quartz-scheduler.xml" />
---Spring-Quartz.xml里面
<!-- ======================== 调度触发器 ======================== -->
<bean id="restoreStockJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="restoreStockJob" />
<property name="cronExpression">
<value>0 0/1 * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="restoreStockJobTrigger"/>
<ref local="noticeTrigger"/>
<ref local="loginclearTrigger"/>
<ref local="LhtxTrigger"/>
<ref local="SynchroXsddFromErpTrigger"/>
<!-- -->
</list>
</property>
<property name="schedulerContextAsMap">
<map>
<!-- spring 管理的service需要放到这里,才能够注入成功 -->
<entry key="gwcService" value-ref="gwcService"/>
<entry key="khxsddService" value-ref="khxsddService"/>
<entry key="xtcsService" value-ref="xtcsService"/>
<entry key="xsddService" value-ref="xsddService"/>
<entry key="dubboService" value-ref="dubboService"/>
<entry key="thddService" value-ref="thddService"/>
</map>
</property>
<property name="jobFactory">
<bean class="cn.sckj.ebs.common.job.MyJobFactory" />
</property>
</bean>
创建job类
public class RestoreStockJob extends QuartzJobBean {
private XsddService xsddService;
@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
// 开独立线程执行库存还原操作
Thread restoreSCS = new Thread(new Runnable() {
@Override
public void run() {
try {
// 还原购物车库存
xsddService.restoreShoppingCartStock();
} catch (Exception e) {
e.printStackTrace();
}
}
});
restoreSCS.start();
Thread restoreOS = new Thread(new Runnable() {
@Override
public void run() {
try {
// 还原订单库存
xsddService.restoreOrderStock();
} catch (Exception e) {
e.printStackTrace();
}
}
});
restoreOS.start();
}
public void setXsddService(XsddService xsddService) {
this.xsddService = xsddService;
}
}
相关文章推荐
- Spring与Quartz集成实现定时调度任务的简单使用
- 使用Spring + quartz实现定时任务调度
- 使用Spring + quartz实现定时任务调度
- Quartz 框架和cron表达式任务调度的例子(spring下实现定时发送邮件)
- Spring和Quartz实现的定时任务调度
- Spring与Quartz的整合实现定时任务调度
- Spring与Quartz的整合实现定时任务调度
- Spring与Quartz的整合实现定时任务调度
- Spring与Quartz的整合实现定时任务调度
- Spring与Quartz的整合实现定时任务调度
- spring整合quartz实现定时任务调度
- 使用spring quartz实现定时任务
- spring使用Quartz实现定时任务
- spring中使用quartz实现定时任务
- Spring与Quartz的整合实现定时任务调度
- Spring整合Quartz实现定时任务调度
- 使用Spring3+Quartz实现定时任务
- Spring整合quartz框架实现任务定时调度
- 使用spring quartz实现定时任务
- Spring与Quartz的整合实现定时任务调度(转)