- pom文件
<!-- quartz定时器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
- job任务类
public class DingUserStatusCheckJob{
private Logger logger = LoggerFactory.getLogger(getClass());
/**
* 定时任务执行内容
* @param
* @return void
*/
public void work(){
logger.debug("钉钉用户状态检测job开始执行!");
}
}
- 配置定时任务
a. spring配置文件
<?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:http-conf="http://cxf.apache.org/transports/http/configuration" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd" default-autowire="byName" default-lazy-init="true">
<bean name="dingUserStatusCheckJobScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true">
<property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
<property name="triggers">
<list>
<ref bean="dingUserStatusCheckJobTrigger" />
</list>
</property>
<!-- 是否自动启动,false表示手动启动 -->
<property name="autoStartup" value="true" />
<!-- 延迟初始化时间,防止系统未加载完成就进行初始化 -->
<property name="startupDelay" value="60" />
</bean>
<bean id="dingUserStatusCheckJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="dingUserStatusCheckJob" />
<property name="cronExpression" value="0/8 * * * * ?" />
</bean>
<bean id="dingUserStatusCheckJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" lazy-init="true">
<property name="targetObject" ref="dingUserStatusCheckManage" />
<property name="targetMethod" value="work" />
<property name="concurrent" value="true" />
</bean>
<bean id="dingUserStatusCheckManage" class="com.acinfo.heritage.service.dingtalk.quartz.DingUserStatusCheckJob" autowire="byType" />
</beans>
b. 基于Java配置
@Configuration
@ComponentScan("com.hailong.quartz")
public class SpringConfig {
//进行注入我们的Job对象
@Bean
public MyJob getMyJob(){
return new MyJob();
}
//进行配置Spring的作业详情工厂类,我们所写的作业类都是给这个对象进行调用的
@Bean
public MethodInvokingJobDetailFactoryBean getMethodInvokingJobDetailFactoryBean(){
MethodInvokingJobDetailFactoryBean bean=new MethodInvokingJobDetailFactoryBean();
//使用set方式注入
bean.setTargetObject(getMyJob()); //定时执行的对象
bean.setTargetMethod("executionMethod"); //定时执行的方法
return bean;
}
//配置一个作业执行的触发器操作,cron表达式可以制定规定时间的执行
@Bean
public CronTriggerFactoryBean getCronTriggerFactoryBean(){
CronTriggerFactoryBean bean=new CronTriggerFactoryBean();
bean.setJobDetail(getMethodInvokingJobDetailFactoryBean().getObject());//注入作业详情
bean.setCronExpression("0/5 * * * * ?");//Cron表达式
return bean;
}
//配置一个方法调试类
@Bean
public SchedulerFactoryBean getSchedulerFactoryBean(){
SchedulerFactoryBean bean=new SchedulerFactoryBean();
bean.setTriggers(getCronTriggerFactoryBean().getObject());
return bean;
}
}