基于springBoot实现定时器

基于springBoot实现定时器,第1张

1.在项目的启动类的同级目录或者更低级目录创建定时器类(反正该类的目录层级不能比启动类高)

①:@Component:要声明为bean,没有声明的话,启动类启动无法实现定时效果。

②:@EnableScheduling:在配置类上使用,开启计划任务的支持(类上)。

③:@Configuration:由于@EnableScheduling是声明在配置类上的,所以定时器类添加了该注解

3.编写定时任务(也就是一个方法罢了,只不过在该方法是在@EnableScheduling声明类下,并多了一个@Scheduled(cron = "0/10 * * * * ?")注解)

4.在定时任务中实现自己的逻辑编写

测试效果如下:

每天进步一点点吧~

1.基于XML的定时器

1.1 Spring的XML文件片段内容

方法1:

<!-- 定时器开关-->

<task:scheduled-tasks>

         <!-- 定时任务(可以有多个定时任务),和执行时间,每5秒执行一次  -->

          <task:scheduled ref="myTask" method="printSomeThing" cron="*/5 * * * * ?"></>

</ task:scheduled-tasks >

<!-- 定时任务Bean所在位置 -->

<context:component-scan base-package="com.yuxiSofterware.task"/>

方法2:

<bean id="demoTask" class="com.yuxiSofterware.task.DemoTask"/>

<bean id="BuildTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="demoTask"/>

<property name="targetMethod" value="printSomeThing" />

<property name="concurrent" value="false" />

</bean>

<bean id="BuildTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<property name="jobDetail" ref="BuildTask"/>

<property name="cronExpression" value="0/5 0 * * * ?" />

</bean>

1.2 Bean类片段内容

package com.yuxiSofterware.task

/**

 * 基于XML的Spring定时器

* @author yuxiSofterware

*/

public class DemoTask {

public void printSomeThing() {

          System.out.println("XML定时器触发。")

}

}

1.3 编写main方法,解析Spring的XML文件,定时器就会按时触发,编写过程略。

2. 基于注解的Spring定时器

package com.yuxiSofterware.task

import org.springframework.scheduling.annotation.Scheduled

import org.springframework.stereotype.Component

/**

* 基于注解的Spring定时器

* @author yuxiSofterware

*/

@Component

public class DemoTask {

 /**

 * 定时任务,每五秒钟执行一次

 */

@Scheduled(corn=" */5 * * * * ? ")

public voidprintSomeThing() {

System.out.println("XML定时器触发。")

}

}

3. 关于定时器,定时任务时间的说明

定时表达式的格式:秒 分 时 日 月 周 年(可选)。

字段名                 允许的值                        允许的特殊字符

秒                         0-59                               , - * /

分                         0-59                               , - * /

小时                   0-23                               , - * /

日                         1-31                               , - * ? / L W C

月                         1-12 or JAN-DEC          , - * /

周几                     1-7 or SUN-SAT            , - * ? / L C #

年 (可选字段)     empty, 1970-2099      , - * /

“?”字符:表示不确定的值

“,”字符:指定数个值

“-”字符:指定一个值的范围

“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

“W”字符:指定离给定日期最近的工作日(周一到周五)

“#”字符:表示该月第几个周X。6#3表示该月第3个周五


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8026048.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存