1. 首先需要引入mvn依赖。只需引入spring-boot-starter-quartz这一个依赖就可以。

    org.springframework.boot
    spring-boot-starter-quartz

  2. 接下来就是配置:quartz.properties
    org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool//线程池
    org.quartz.threadPool.threadCount=10 //线程数量
    org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore //基于内存模式

  3. 配置好了以后,开始我们的第一个定时任务。
    (1)先建立一个task,

    ```
     public class MyFirstJob {
    	    private Logger logger = LoggerFactory.getLogger(MyFirstJob.class);
    	    public void execute(){
    	        logger.info("定时任务执行");
    	    }
    	}
    ```
    

    (2) 这里采用的是xml方式配置定时任务:

    <bean id="myFirstTask" class="com.didi.es.boss.morgan.task.MyFirstJob"/>
    
        <bean id="myFirstJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="myFirstTask"/>
            <property name="targetMethod" value="execute"/>
            <property name="concurrent"   value="false"/>
        </bean>
    

    (3)定义触发器:

    <!-- 调度触发器 -->
    <bean id="myFirstJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
         <property name="jobDetail"      ref="myFirstJob"/>
         <property name="cronExpression" value="*/2 * * * * ?"/>//每两秒执行一次。
    </bean>
    

    (4)定义Scheduler
    Scheduler就是Quartz的控制中心,所有任务都是由它来设施。

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
                <list>
                    <ref bean="myFirstJobTrigger"/>
                </list>
        </property>
        <property name="taskExecutor" ref="jobExecutor"/>
    </bean>
    

    !!!重点说一下,这里jobExecutor可以自己根据业务需求配置线程池。

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

4.已经写好了任务,接下来就是运行了,启动application.
SpringBoot2.x 与Quartz集成

相关文章: