Spring quartz定时任务的配置与使用
来源:互联网 发布:周朝放弃关中 知乎 编辑:程序博客网 时间:2024/06/05 13:29
- Maven引入quartz的jar包
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.2</version></dependency>
- 创建JobFactory 接口的实现类:用来实例化Job,为了在定时任务中使用@Autowired注入service对象,若不实例化,会导致@Autowired注入为null。
package com.wx.app.ygp.dbyc.task.jobs;import org.quartz.spi.TriggerFiredBundle;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.config.AutowireCapableBeanFactory;import org.springframework.scheduling.quartz.SpringBeanJobFactory;/** * * @ClassName: QuartzJobFacotry * @author: huangjp * @date: 2017年4月10日 下午6:49:23 */public class QuartzJobFacotry extends SpringBeanJobFactory{ @Autowired private AutowireCapableBeanFactory beanFactory; @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { Object jobInstance = super.createJobInstance(bundle); beanFactory.autowireBean(jobInstance); return jobInstance; }}
- 定时任务的配置文件:spring-task.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.wx.app.ygp.dbyc.task"/> <!-- 大表远传定时任务 --> <bean id="largeTableFarTransferJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.wx.app.ygp.dbyc.task.jobs.LargeTableFarTransferJobImpl"></property> </bean> <!-- 大表远传定时任务的触发时间--> <bean id="largeTableFarTransferTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="largeTableFarTransferJob"></property> <property name="cronExpression" value="0 */3 * * * ?"></property> <!-- 设置每三分钟执行一次--> </bean> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="largeTableFarTransferTriggerBean"/> </list> </property> <property name="jobFactory"> <bean class="com.wx.app.ygp.dbyc.task.jobs.QuartzJobFacotry" /> <!-- 实例化Job--> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.scheduler.instanceName">DBYC-QuartzScheduler</prop> </props> </property> </bean></beans>
- web.xml中引入spring-task.xml:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-core.xml; classpath:spring-mybatis.xml; classpath:spring-task.xml; <!-- 定时任务 --> classpath:spring-dbyc.xml </param-value></context-param>
- 配置都做完了,可以开始写定时任务的类了:
package com.wx.app.ygp.dbyc.task.jobs;import java.util.Calendar;import java.util.Date;import java.util.List;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;@Servicepublic class LargeTableFarTransferJobImpl implements Job{ private static final Logger log = LoggerFactory.getLogger(LargeTableFarTransferJobImpl.class); @Autowired private LargeTableFarTransferService largeTableFarTransferService; @Override @Transactional public void execute(JobExecutionContext context) throws JobExecutionException { Calendar nowC = Calendar.getInstance(); log.info("大表远传定时任务开始"); List<LargeTableFarTransferEntity> tableList = largeTableFarTransferService.getLargeTableList(); log.info("执行大表远传的定时任务,大表的数量是{}",tableList.size()); .....}
至此,一个简单的定时任务框架已经搭好了,之前做过若干个定时任务,但都是在前人搭好的框架下,只做实现部分,经过这次开发独立小项目的机会,全面的认识了定时任务的框架及实现流程。
备注:Spring QuartZ Cron表达式
0 0
- Spring quartz定时任务的配置与使用
- 定时任务(Spring与Quartz使用)
- Spring与Quartz的结合使用 主要用于定时任务!!!
- spring集成quartz定时任务的配置
- 使用spring 的Quartz 定时任务入门
- 使用Spring+Quartz的定时任务。
- Spring定时任务配置quartz
- spring quartz 定时任务配置
- Spring+Quartz配置定时任务
- Spring配置Quartz定时任务
- Spring+Quartz配置定时任务
- spring quartz配置定时任务
- Spring+Quartz配置定时任务
- Quartz定时任务使用配置
- spring定时任务Quartz多任务配置
- spring(17)------spring的定时任务配置(quartz)
- Quartz定时任务,Quartz Spring定时任务,spring多个定时任务Quartz配置,示例,详解
- Spring与Quartz集成配置实现简单定时任务调度
- AndroidStudio findviewbyid补全快捷键
- 初学数据库之一
- 找到无序数组中最小的K个数
- js中的apply()与call()
- poj 3177 Redundant Paths 【图论-边双联通】
- Spring quartz定时任务的配置与使用
- 广度/宽度优先搜索(BFS)
- Servlet和Session统计访问次数
- 【bzoj3522】[Poi2014]Hotel
- leetcode 88. Merge Sorted Array
- Canny算法 边缘检测
- uploadsingleimage
- WdatePicker 日历控件的onchange事件屏蔽
- 深度学习各种优化函数详解