quartz调度

Quartz中专用词汇:

scheduler:任务调度器;

trigger:触发器,用于定义调度的任务;

job:任务,即被调度的任务;

misfire:错过的,指本来应该被执行的任务但实际没有被执行的任务调度

Quartz任务调度的控制器:

核心元素:scheduler,trigger和job,其中trigger和job是任务调度的元素,scherduler是实际执行调度的控制器。

Spring中Quartz的两种实现方式:

一、任务类继承QuartzJobBean

二、在配置文件中定义任务类和要执行的方法,类和方法可以使普通类。

相比而言,第二中方式比较灵活,此处采用第二种方式:

首先导入jar包:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>


然后写一个类:

扫描二维码关注公众号,回复: 4639447 查看本文章

public class App {
	public void service() {
		System.out.println("Hello World!");
	}
}

Spring配置文件:

<?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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                        http://www.springframework.org/schema/context    
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/tx  
                        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
                        http://www.springframework.org/schema/mvc    
                        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd  
                        http://www.springframework.org/schema/aop   
                        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> 

    <!-- 定时任务start -->

    <!-- 线程执行器配置,用于任务注册 -->
    <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="10" />
        <property name="maxPoolSize" value="100" />
        <property name="queueCapacity" value="500" />
    </bean>

    <!-- 业务对象 -->
    <bean id="testJobTask" class="com.cneport.demo.App" />

    <!-- 调度业务 -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="testJobTask" />
        <property name="targetMethod" value="service" />
    </bean>

    <!-- 增加调用的触发器,触发时间 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetail" />
        <property name="cronExpression" value="0/2 * * * * ? *" />
    </bean>

    <!-- 设置调度 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger" />
            </list>
        </property>
        <property name="taskExecutor" ref="executor" />
    </bean>
    <!-- 定时任务end -->

</beans>

 

猜你喜欢

转载自blog.csdn.net/qq_27493017/article/details/78720813