导入Spring相关的jar
<!-- 引入Spring和spring mvc相关的jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- 这个事务相关的jar不能少,少会抛出异常 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
导入日志相关的jar
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
导入quartz的二个相关的jar
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
完整的pom文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxx</groupId>
<artifactId>quartz</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
<!-- 引入Spring和spring mvc相关的jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 这个事务相关的jar不能少,少会抛出异常 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
</dependencies>
</project>
进行写一个jave的配置类,配置类如下
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.hailong.quartz.MyJob;
@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;
}
}
在要配置上加上我们的注解扫描器,然后在这个配置类上进行给Spring容器加入quartz的相关的配置属性
接下就是进行开发我们的具体的调用作业了
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyJob {
public void executionMethod(){
System.out.println("我们的使用quartz来进行定时执行我们的业务操作"+
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
进行测试我们程序
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
// new ClassPathXmlApplicationContext(SpringConfig.class);
new AnnotationConfigApplicationContext(SpringConfig.class);
}
}
结果如下
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:05
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:10
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:15
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:20
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:25
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:30
我们的使用quartz来进行定时执行我们的业务操作2018-05-07 17:10:35