Spring使用纯java配置的方式整合quartz

本文介绍如何使用Spring和Quartz实现定时任务的功能。通过Maven依赖管理,引入Spring及Quartz相关组件,并详细展示了如何编写Java配置类来定义作业、触发器及调度器。最后通过一个简单的例子验证了定时任务的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值