Springboot ใช้วิธีการใช้งานตัวจับเวลาเพิ่ม @Scheduled คำอธิบายประกอบในการออกแบบพารามิเตอร์ cron
แพ็คเกจ com.clsystem.Comm; นำเข้า org.springframework.scheduling.annotation.scheduled;/** * สร้างขึ้นโดยพุดดิ้งใน 2017-11-10 (งานบันทึกเวลาเช็คอิน) */ @componentpublic clocktiming {/** * /* InsertClock () {// Business Logic}}การใช้งานของตัวจับเวลาแบบไดนามิกนั้นง่ายมากที่จะสืบทอดวิธีการใช้งานคลาส SchedulingConfigurer
แพ็คเกจ com.clsystem.comm; นำเข้า com.clsystem.util.dateutil; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.scheduling.trigger; org.springframework.scheduling.annotation.schedulingconfigurer นำเข้า org.springframework.scheduling.config.scheduledtaskistrar; นำเข้า org.springframework.support.support java.util.calendar; นำเข้า java.util.date;/*** สร้างโดยพุดดิ้งเมื่อ 2017-11-15 (ตัวจับเวลาแบบไดนามิกถูกใช้เพื่อกดข้อความ 10 นาทีก่อนการเช็คอิน) (! นาฬิกาปลุก) */ @ComponentPublic คลาส DynamicsCheduleDTask ดำเนินการกำหนดเวลาการจัดตารางเวลา {@AutoWired Private Checksystemmapper Checksystemper; @Override โมฆะสาธารณะ configureTasks (ScheduleDTaskRegistrar TaskRegistrar) {TaskRegistrar.addTriggerTask (ใหม่ runnable () {@Override โมฆะสาธารณะเรียกใช้ () {// ระบบลอจิกทางธุรกิจ {// ตั้งค่า Timer Integer Day ถัดไป = DateUtil.getDay (); // รับวันธรรมดาวันนี้+= 1; // รับวันธรรมดาของวันพรุ่งนี้ถ้า (วัน == 8) {// ยกเว้นวันอาทิตย์ = 1; จำนวนเต็ม beforemorntimehour = integer.parseint (morntime.substring (0, j)); // รับเวลาทำงานตอนเช้าจำนวนเต็ม beforemorntimeminute = จำนวนเต็มพาราม Date.setMinutes (beforemorntimeminute); นาที = cal.get (calendar.minute); // stack string cron = "0"+นาที+"" ชั่วโมง+" * *"+วัน+""; trigger.Nextexecutiontime (TriggerContext); -การใช้งานพื้นฐานของพารามิเตอร์ cron:
● Asterisk (): สามารถใช้ในทุกฟิลด์เพื่อแสดงแต่ละช่วงเวลาในโดเมนเวลาที่สอดคล้องกันเช่นในฟิลด์นาทีมันหมายถึง "ต่อนาที";
●เครื่องหมายคำถาม (?): ตัวละครนี้ใช้เฉพาะในฟิลด์วันที่และสัปดาห์เท่านั้นและมักจะระบุว่าเป็น "ค่าที่ไม่มีความหมาย" เทียบเท่ากับตัวละครจุด;
●เครื่องหมายลบ (-): แสดงช่วง หากใช้ "10-12" ในสนามชั่วโมงมันหมายถึง 10 ถึง 12 คะแนนนั่นคือ 10, 11, 12;
●เครื่องหมายจุลภาค (,): แสดงค่ารายการ หากคุณใช้ "จันทร์พุธวันศุกร์" ในสนามสัปดาห์มันหมายถึงวันจันทร์วันพุธและวันศุกร์
● slash (/): x/y หมายถึงลำดับขั้นตอนที่เท่ากัน x คือค่าเริ่มต้นและ y คือค่าขั้นตอนที่เพิ่มขึ้น หากคุณใช้ 0/15 ในฟิลด์นาทีมันจะแสดงเป็น 0, 15, 30 และ 45 วินาทีในขณะที่ 5/15 หมายถึง 5, 20, 35, 50 ในฟิลด์นาทีคุณสามารถใช้ */y ซึ่งเทียบเท่ากับ 0/y;
● L: ตัวละครนี้ใช้เฉพาะในฟิลด์วันที่และสัปดาห์ซึ่งแสดงถึงความหมายของ "สุดท้าย" แต่มันหมายถึงแตกต่างกันในสองฟิลด์ l ในฟิลด์วันที่ระบุวันสุดท้ายของเดือนเช่นวันที่ 31 มกราคมและ 28 กุมภาพันธ์ซึ่งไม่ใช่ปีกระโดด หาก L ถูกใช้ในสัปดาห์มันจะระบุวันเสาร์ซึ่งเทียบเท่ากับ 7 อย่างไรก็ตามถ้า L ปรากฏในฟิลด์สัปดาห์และนำหน้าด้วยค่า x นั่นหมายถึง "วัน X สุดท้ายของเดือน" ตัวอย่างเช่น 6L หมายถึงวันศุกร์สุดท้ายของเดือน
● W: อักขระนี้สามารถปรากฏในฟิลด์วันที่เท่านั้นและเป็นการปรับเปลี่ยนวันที่นำซึ่งระบุวันทำงานที่ใกล้เคียงที่สุด ตัวอย่างเช่น 15W แสดงถึงวันทำงานที่ใกล้เคียงที่สุดถึงวันที่ 15 ของเดือน หากวันที่ 15 ของเดือนคือวันเสาร์มันจะตรงกับวันศุกร์ที่ 14; หากวันที่ 15 ของเดือนคือวันอาทิตย์มันจะตรงกับวันจันทร์ที่ 16; หากวันที่ 15 ของเดือนคือวันอังคารมันเป็นวันอังคารที่ 15 อย่างไรก็ตามจะต้องสังเกตว่าวันที่จับคู่ที่เกี่ยวข้องไม่สามารถข้ามไปยังเดือน หากคุณระบุ 1W หากวันที่ 1 คือวันเสาร์ผลลัพธ์จะตรงกับวันจันทร์ที่ 3 ไม่ใช่วันสุดท้ายของเดือนที่แล้ว สตริง W สามารถระบุวันที่เดียวเท่านั้น แต่ไม่สามารถระบุช่วงวันที่ได้
●การรวมกันของ LW: LW สามารถใช้ในฟิลด์วันที่ซึ่งหมายถึงวันทำการสุดท้ายของเดือน
●เครื่องหมายสำคัญ (#): ตัวละครนี้สามารถใช้ในฟิลด์สัปดาห์เท่านั้นและแสดงถึงวันทำการของเดือน ตัวอย่างเช่น 6#3 หมายถึงวันศุกร์ที่สามของเดือน (6 หมายถึงวันศุกร์#3 หมายถึงวันที่สามในขณะนี้) ในขณะที่ 4#5 หมายถึงวันพุธที่ห้าของเดือนโดยสมมติว่าเดือนไม่มีวันพุธที่ห้า
● C: ตัวละครนี้ใช้เฉพาะในเขตข้อมูลวันที่และสัปดาห์ซึ่งแสดงถึงความหมายของ "ปฏิทิน" มันหมายถึงวันที่ที่เกี่ยวข้องกับแผนและหากวันที่ไม่เกี่ยวข้องจะเทียบเท่ากับวันที่ทั้งหมดในปฏิทิน ตัวอย่างเช่น 5c ในฟิลด์วันที่เทียบเท่ากับวันแรกหลังจากวันที่ 5 ของปฏิทิน 1C เทียบเท่ากับวันแรกหลังจากวันอาทิตย์ในสนามสัปดาห์
การแสดงออกของ cron ไม่ไวต่อกรณีของตัวละครพิเศษและไม่ไวต่อตัวย่อของคดีภาษาอังกฤษของสัปดาห์
ตารางที่ 2 แสดงตัวอย่างของการเป็นตัวแทน cron ที่สมบูรณ์ด้านล่าง:
การแสดงออกของ cron หมายถึง "0 0 12 * *?" ทริกเกอร์ "0 15 10? * *" ทริกเกอร์ "0 15 10 * *?" ทริกเกอร์ "0 15 10 * *?" ทริกเกอร์ "0 15 10 * *? *" ทริกเกอร์ "0 15 10 * *? *" ทริกเกอร์ "0 15 10 * *? 2005" ทริกเกอร์ "0 * 14 * *?" ทริกเกอร์ "0 0/5 14 * *?" ทริกเกอร์ "0 0/5 14 * *?" ทริกเกอร์ "0 0/5 14,18 * *?" ทริกเกอร์ "0 0/5 14,18 *?" ทริกเกอร์ "0 0/5 14,18 *?" 0 0-5 14 * *?” ทุกๆ 5 นาทีจาก 2:00 - 14:05 น. ทุกวันทริกเกอร์ "0 10,44 14? 3 พุธ "ทุกวันพุธในเดือนมีนาคมทริกเกอร์" 0 15 10? * จันทร์-ฟริล "ทุกวันจันทร์วันอังคารวันพุธวันพฤหัสบดีและวันศุกร์
สรุป
ด้านบนคือการใช้ตัวจับเวลาแบบไดนามิก Springboot ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!