-
首先需要引入mvn依赖。只需引入spring-boot-starter-quartz这一个依赖就可以。
org.springframework.boot
spring-boot-starter-quartz
-
接下来就是配置:quartz.properties
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool//线程池
org.quartz.threadPool.threadCount=10 //线程数量
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore //基于内存模式 -
配置好了以后,开始我们的第一个定时任务。
(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.