日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 定时任务 注解版

發(fā)布時間:2023/12/20 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 定时任务 注解版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Task類:

?

ManageSql.Java對應(yīng)代碼:

?

[java]?view plain?copy ?
  • package?com.axb.cheney.task;??
  • import?java.sql.ResultSet;??
  • import?java.sql.SQLException;??
  • import?org.springframework.scheduling.annotation.Scheduled;??
  • import?org.springframework.stereotype.Component;??
  • ??
  • /**???
  • ?*?心跳更新。啟動時執(zhí)行一次,之后每隔2秒執(zhí)行一次???
  • ?*?@Scheduled(fixedRate?=?1000*2)??
  • ?*/??
  • ??
  • @Component??
  • public?class?ManageSql?{??
  • ??
  • ????@Scheduled(cron="0/30?*?*?*?*???")?//間隔5秒執(zhí)行??????
  • ????public?void?test(){??
  • ????????System.out.println("定時任務(wù)開始啦,哈哈哈");??
  • ????????System.out.println("<<<---------結(jié)束執(zhí)行HR數(shù)據(jù)同步任務(wù)--------->>>");??
  • ????}??
  • }??
  • ?

    ?

    ?

    配置:

    applicationContext.xml?中添加以下對應(yīng)內(nèi)容?:
    1、xmlns 加下面的內(nèi)容:

    xmlns:task="http://www.springframework.org/schema/task"


    2、然后xsi:schemaLocation加下面的內(nèi)容:
    http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-4.1.xsd


    3、最后是我們的task任務(wù)掃描注解
    <task:annotation-driven/>


    4、配置的掃描位置是
    <context:component-scan base-package="com.XXX.task"></context:component-scan>

    添加后,如下圖所示:

    ?

    ?

    擴展:定時時間的設(shè)置

      如:“0/5 * * * * ?”

      CronTrigger配置完整格式為: [秒] [分] [小時] [日] [月] [周] [年]

    序號說明是否必填允許填寫的值允許的通配符
    10-59, - * /
    20-59, - * /
    3小時0-23, - * /
    41-31, - * ? / L W
    51-12或JAN-DEC, - * /
    61-7或SUN-SAT, - * ? / L W
    7empty 或1970-2099, - * /

    ?

    通配符說明:

    *?表示所有值. 例如:在分的字段上設(shè)置 "*",表示每一分鐘都會觸發(fā)。


    ??表示不指定值。使用的場景為不需要關(guān)心當(dāng)前設(shè)置這個字段的值。

    例如:要在每月的10號觸發(fā)一個操作,但不關(guān)心是周幾,所以需要周位置的那個字段設(shè)置為"?" 具體設(shè)置為 0 0 0 10 * ?


    -?表示區(qū)間。例如 在小時上設(shè)置 "10-12",表示 10,11,12點都會觸發(fā)。


    ,?表示指定多個值,例如在周字段上設(shè)置 "MON,WED,FRI" 表示周一,周三和周五觸發(fā)


    /?用于遞增觸發(fā)。如在秒上面設(shè)置"5/15" 表示從5秒開始,每增15秒觸發(fā)(5,20,35,50)。 在月字段上設(shè)置'1/3'所示每月1號開始,每隔三天觸發(fā)一次。


    L?表示最后的意思。在日字段設(shè)置上,表示當(dāng)月的最后一天(依據(jù)當(dāng)前月份,如果是二月還會依據(jù)是否是潤年[leap]), 在周字段上表示星期六,相當(dāng)于"7"或"SAT"。如果在"L"前加上數(shù)字,則表示該數(shù)據(jù)的最后一個。例如在周字段上設(shè)置"6L"這樣的格式,則表示“本月最后一個星期五"


    W?表示離指定日期的最近那個工作日(周一至周五). 例如在日字段上設(shè)置"15W",表示離每月15號最近的那個工作日觸發(fā)。如果15號正好是周六,則找最近的周五(14號)觸發(fā), 如果15號是周未,則找最近的下周一(16號)觸發(fā).如果15號正好在工作日(周一至周五),則就在該天觸發(fā)。如果指定格式為 "1W",它則表示每月1號往后最近的工作日觸發(fā)。如果1號正是周六,則將在3號下周一觸發(fā)。(注,"W"前只能設(shè)置具體的數(shù)字,不允許區(qū)間"-").


    #?序號(表示每月的第幾個周幾),例如在周字段上設(shè)置"6#3"表示在每月的第三個周六.注意如果指定"#5",正好第五周沒有周六,則不會觸發(fā)該配置(用在母親節(jié)和父親節(jié)再合適不過了) ;

    小提示:
    'L'和 'W'可以組合使用。如果在日字段上設(shè)置"LW",則表示在本月的最后一個工作日觸發(fā);
    周字段的設(shè)置,若使用英文字母是不區(qū)分大小寫的,即MON 與mon相同;

    ?

    參考:

    https://wuzhuti.cn/850.html/comment-page-1/

    https://wuzhuti.cn/447.html

    ?

    ?

    ?

    cron表達式規(guī)則:
    * 字段 允許值 允許的特殊字符
    秒 0-59 , - * /
    分 0-59 , - * /
    小時 0-23 , - * /
    日期 1-31 , - * ? / L W C
    月份 1-12 或者 JAN-DEC , - * /
    星期 1-7 或者 SUN-SAT , - * ? / L C #
    年(可選) 留空, 1970-2099 , - * /?
    - 區(qū)間?
    * 通配符?
    ? 你不想設(shè)置那個字段

    1 Seconds (0-59)?
    2 Minutes (0-59)?
    3 Hours (0-23)?
    4 Day of month (1-31)?
    5 Month (1-12 or JAN-DEC)?
    6 Day of week (1-7 or SUN-SAT)?
    7 Year (1970-2099)?
    取值:可以是單個值,如6;?
    也可以是個范圍,如9-12;?
    也可以是個列表,如9,11,13?
    也可以是任意取值,使用*?

    CRON表達式 示例:
    "0 0 12 * * ?" 每天中午十二點觸發(fā)?
    "0 15 10 ? * *" 每天早上10:15觸發(fā)?
    "0 15 10 * * ?" 每天早上10:15觸發(fā)?
    "0 15 10 * * ? *" 每天早上10:15觸發(fā)?
    "0 15 10 * * ? 2005" 2005年的每天早上10:15觸發(fā)?
    "0 * 14 * * ?" 每天從下午2點開始到2點59分每分鐘一次觸發(fā)?
    "0 0/5 14 * * ?" 每天從下午2點開始到2:55分結(jié)束每5分鐘一次觸發(fā)?
    "0 0/5 14,18 * * ?" 每天的下午2點至2:55和6點至6點55分兩個時間段內(nèi)每5分鐘一次觸發(fā)?
    "0 0-5 14 * * ?" 每天14:00至14:05每分鐘一次觸發(fā)?
    "0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44觸發(fā)?
    "0 15 10 ? * MON-FRI" 每個周一、周二、周三、周四、周五的10:15觸發(fā)?
    "0 * * * * ?" 每分鐘(0點0時0分)觸發(fā)一次
    "0 0 * * * ?" 每小時(0點0時0分)觸發(fā)一次

    fixedDelay = 5000 每秒觸發(fā)一次 這個周期是以上一個調(diào)用任務(wù)的完成時間為基準(zhǔn),在上一個任務(wù)完成之后,5s后再次執(zhí)行
    fixedRate = 5000 每3秒觸發(fā)一次 固定速率執(zhí)行,以上一個任務(wù)開始時間為基準(zhǔn),從上一任務(wù)開始執(zhí)行后5s再次調(diào)用
    initialDelay=3000 啟動后延遲3秒后開始首次觸發(fā)

    ????還可以通過使用zone屬性來指定cron表達式被調(diào)用的時區(qū)。

    ?

    注意:

      1、spring的注解@Scheduled ?需要寫在實現(xiàn)方法上;

      2、定時器的任務(wù)方法不能有返回值(如果有返回值,spring初始化的時候會告訴你有個錯誤、需要設(shè)定一個proxytargetclass的某個值為true),不能指向任何的參數(shù);

      3、如果該方法需要與應(yīng)用程序上下文的其他對象進行交互,通常是通過依賴注入來實現(xiàn);

      4、實現(xiàn)類上要有組件的注解@Component。

    轉(zhuǎn)載于:https://www.cnblogs.com/kuoAT/p/9358679.html

    總結(jié)

    以上是生活随笔為你收集整理的Spring 定时任务 注解版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。