Quartz使用
导入依赖
<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>
自定义一个任务类
public class MyJob {
public void sendMsg(){
System.out.println("自定义的任务执行了,执行时间为:"+new Date());
}
}
在spring配置文件中将自定义任务类注入
<!-- 注册自定义任务对象 -->
<bean id="myJob" class="cn.itheima.quartz.MyJob"></bean>
在spring配置文件中注册一个jobDetail,通过反射调用类,已经方法
<!-- 注册jobDetail,通过反射调用自定义任务对象 -->
<bean id="myJobDetail" "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 目标对象 -->
<property name="targetObject" ref="myJob"></property>
<property name="targetMethod" value="sendMsg"></property>
</bean>
在spring配置文件中配置触发器,设定触发时间
<!-- 配置触发器,指定任务触发时间 -->
<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 注入jobDetail -->
<property name="jobDetail" ref="myJobDetail"></property>
<!-- 通过表达式指定配置任务触发时间 -->
<property name="cronExpression">
<!-- 每5秒钟执行一次任务 -->
<value>0/5 * * * * ? </value>
</property>
</bean>
在spring配置文件中配置一个调度工厂,统一调度任务 任务可以是多个
<!-- 配置调度工厂对象,统一调用自定义任务 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 配置触发器,可以配置多个 -->
<property name="triggers">
<list>
<ref bean="myTrigger"/>
</list>
</property>
</bean>
测试启动
package cn.itheima;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class QuartzTest {
public static void main(String[] args) {
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
}
}