Spring Quartz 实现多任务定时调用

该博客使用了ssm整合的一些代码,所以就不罗列出所有代码

1.导入Quartz的Maven依赖

<!-- quartz 的jar -->
    <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>

2.编写定时任务1和任务2

public class Task {
	
	public void execute() {
		// 这里写你的任务逻辑
		System.out.println("Task");
	}
	
}
public class Task2 {

	public void execute() {
		// 这里写你的任务逻辑
		System.out.println("Task2");
	}
	
}

3.编写配置文件timer-bean.xml(注意配置文件要导入task命名空间)

<?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:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="task" class="com.tansen.selecting.task.Task"></bean>
	<bean id="task2" class="com.tansen.selecting.task.Task2"></bean>

	<!--定义任务 -->
	<bean id="jobDetailFactoryBean1"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="task" />
		<property name="targetMethod" value="execute" />
		<property name="concurrent" value="false" />
	</bean>
	<!--定义任务 -->
	<bean id="jobDetailFactoryBean2"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="task2" />
		<property name="targetMethod" value="execute" />
		<property name="concurrent" value="false" />
	</bean>

	<!--定义触发器 -->
	<bean id="cronTriggerFactoryBean1"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<!--注入触发器的工作任务 -->
		<property name="jobDetail" ref="jobDetailFactoryBean1"></property>
		<!--定义的是触发器的事件格式的表达式 -->
		<property name="cronExpression" value="0/3 * * * * ?"></property>
	</bean>
	<!--定义触发器 -->
	<bean id="cronTriggerFactoryBean2"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<!--注入触发器的工作任务 -->
		<property name="jobDetail" ref="jobDetailFactoryBean2"></property>
		<!--定义的是触发器的事件格式的表达式 -->
		<property name="cronExpression" value="0/6 * * * * ?"></property>
	</bean>

	<!--定义的是调度器 -->
	<bean
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTriggerFactoryBean1" />
				<ref bean="cronTriggerFactoryBean2" />
			</list>
		</property>
	</bean>

</beans>

在spring配置文件中(applicationContext.xml)导入timer-bean.xml

<import resource="timer-bean.xml"/>

运行结果

猜你喜欢

转载自blog.csdn.net/laogay_tansen/article/details/81333827
今日推荐