spring中使用quartz框架(基于内存)

本文详细介绍了如何在SSM框架中使用Quartz进行定时任务的配置与实现过程,包括依赖引入、配置文件设置及任务类编写等关键步骤。

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

使用quartz前需要弄清楚的流程:

创建自己的任务类Task

把task注入到quartz的jobDetail中

把jobDetail注入到quartz的触发器trigger中,,一个trigger只能触发一个jobDetail

把所有的trigger注入到quartz的调度器schedule中,,schedule会根据trigger中配置的时间来统一调度

以SSM框架为例:

1、导入包:

<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context-support</artifactId>
             <version>${spring.version}</version>
</dependency>


2、配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task-3.0.xsd">
	<!-- 系统定时任务工厂类 -->
	<bean id="systemDescsionScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<!--把下面两个触发器注入到调度器中-->
		<property name="triggers">
			<list>
				 <ref bean="trigger1"/>
				 <ref bean="trigger2"/>
			</list>
		</property>
		<!--设置线程池的大小为4,,任务少的话,一般不设置-->
		<property name="quartzProperties">
			<props>
				<prop key="org.quartz.threadPool.threadCount">4</prop>
			</props>
		</property>
	</bean>

	<!-- 定义触发器1 -->
	<bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<bean class="org.springframework.scheduling.quartz.JobDetailBean">
				<!--value是自己写的任务类-->
				<property name="jobClass" value="com.itcast.service.task.Task1" /> 
				<property name="jobDataAsMap">
				<map>
					<!--entry是任务中通过spring注入的其他bean,我这里是service-->
					<entry key="userService" value-ref="userService"/>
					<entry key="loginService" value-ref="loginService"/>
				</map>
				</property>
			</bean>
		</property>
		<!--触发时间-->
		<property name="cronExpression" value="0 30 00 * * ?"/>  
	</bean>
	
	<!-- 定义触发器2 -->
	<bean id="trigger2" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<bean class="org.springframework.scheduling.quartz.JobDetailBean">
				<property name="jobClass" value="com.itcast.service.task.Task2"/>
			</bean>
		</property>
		<!--触发时间-->
<property name="cronExpression" value="0 0 0 * * ?"/> </bean></beans>


3、任务类:

public class Task1 implements Job{
	@Autowired
	private UserService userService;
	
	@Autowired
	private LoginService loginService;
	
	@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
			//写自己的业务逻辑
		}catch(Exception e){
			
		}
	}
}
public class Task2 implements Job{	
	@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
			//写自己的业务逻辑
		}catch(Exception e){
			
		}
	}
}


基于内存的任务调度,如果服务器重启什么的,之前的记录就不在了,会根据配置重新执行。下一篇介绍quartz持久化到数据库。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值