เมื่อเร็ว ๆ นี้มีความจำเป็นที่จะต้องใช้งานการดำเนินการตามกำหนดเวลาในโครงการเช่นการคำนวณเวลาของสมาชิกการเรียกอินเทอร์เฟซของบุคคลที่สาม ฯลฯ เนื่องจากโครงการใช้กรอบฤดูใบไม้ผลิจึงมีการแนะนำที่นี่ร่วมกับกรอบฤดูใบไม้ผลิ
เขียนการบ้าน
นั่นคือ Pojo ธรรมดาดังนี้:
แพ็คเกจ com.pcmall.task; นำเข้า org.slf4j.logger; นำเข้า org.slf4j.loggerfactory; งานระดับสาธารณะ {logger logger แบบคงที่ส่วนตัว = loggerFactory.getLogger (taska.class); + i);}} โมฆะสาธารณะ taska2 () {สำหรับ (int i = 0; i <100; i ++) {system.out.println ("----- a2 ----" + i);}}} ตั้งค่างานเฉพาะในไฟล์กำหนดค่าสปริง
<? xml version = "1.0" encoding = "utf-8"?> <ถั่ว xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans.xsdญ value = "taska1"> </property> <property name = "concurrent" value = "false"> </property> </epean> <bean id = "taskJoba2"> <property name = "targetObject" ref = "taska"> </property> <property name = "targetMethod" id = "taskJobb1"> <property name = "targetObject" ref = "taskB"> </คุณสมบัติ> <property name = "targetMethod" value = "taskB1"> </คุณสมบัติ> <property name = "concurrent" value = "false"> </property> </epean> name = "targetMethod" value = "taskB2"> </คุณสมบัติ> <property name = "concurrent" value = "false"> </property> </epean> <bean id = "taska1trigger"> <property name = "jobdetail"> <ref bean = "taskjoba1"/> </ ? </value> </คุณสมบัติ> </ebean> <bean id = "taska2trigger"> <property name = "jobdetail"> <ref bean = "taskjoba2"/> </property> <property name = "cronexpression"> <value> 0/2 * *? Bean = "TaskJobb1"/> </perty> <property name = "cronexpression"> <value> 0 0/1 * *? ? < /value> < /คุณสมบัติ> </ebean> <bean id = "scheduler" class = "org.springframework.scheduling.quartz.schedulerfactoryBean"> <property name = "Triggers"> <refriggin = "taska1trigger" Bean = "TaskB2trigger"/> </list> </property> </ebean> </epeans>
สังเกต
ทริกเกอร์สามารถเรียกใช้งานหนึ่งงานเท่านั้น แต่งานสามารถเรียกใช้ทริกเกอร์หลายครั้งซึ่งจะทำให้เกิดปัญหาพร้อมกันในครั้งนี้ ในควอตซ์หากคุณไม่ต้องการทำงานเดียวกันพร้อมกันคุณสามารถใช้ statefuljob แทนงานได้ หากคุณใช้ MethodInvokingJobDetailFactoryBean ในฤดูใบไม้ผลิคุณสามารถทำได้โดยการตั้งค่าคุณสมบัติพร้อมกัน = "เท็จ"
สิ้นสุดหมายเหตุ
ประโยชน์ของการใช้ควอตซ์ในฤดูใบไม้ผลิแทนแอปพลิเคชันเดียวรวมถึง:
การตั้งค่าการตั้งเวลางานทั้งหมดในสถานที่เดียวกันทำให้งานง่ายต่อการดูแลรักษา
การเข้ารหัสงานเป็นไปได้เท่านั้นทริกเกอร์และตัวกำหนดตารางเวลาสามารถตั้งค่าได้ตามการกำหนดค่า
คุณสามารถใช้ Pojo Java Bean เพื่อดำเนินงานโดยไม่ต้องใช้งานอินเตอร์เฟสงาน
การใช้งานโดยละเอียดของการแสดงออกของ cron
อักขระพิเศษที่อนุญาตโดยค่าที่อนุญาตในฟิลด์
0-59 วินาที - * /
0-59, - * /
ชั่วโมง 0-23, - * /
วันที่ 1-31, - *? / LWC
เดือนที่ 1-12 หรือ Jan-Dec,- * /
สัปดาห์ที่ 1-7 หรือ Sun-Sat- *? / lc #
ปี (ไม่บังคับ) ว่างเปล่า 2513-2562, - * /
ตัวอย่าง:
0/5 * * * *? : ดำเนินการทุก ๆ 5 วินาที
อักขระ "" ใช้เพื่อระบุค่าทั้งหมด ตัวอย่างเช่น: "" หมายถึง "ต่อนาที" ในสนามของนาที
"?" อักขระจะใช้เฉพาะในวันที่และวันของสัปดาห์ มันถูกใช้เพื่อระบุ "ค่าที่ไม่ จำกัด " มันมีประโยชน์เมื่อคุณต้องการระบุบางสิ่งบางอย่างโดยหนึ่งในสองโดเมนนี้ คุณจะเข้าใจโดยดูตัวอย่างด้านล่าง
องค์ประกอบทั้งสองของวันที่ในเดือนและวันที่ในสัปดาห์นั้นมีความพิเศษร่วมกัน ตั้งเครื่องหมายคำถามเพื่อระบุว่าคุณไม่ต้องการตั้งค่าฟิลด์นั้น
ตัวละคร "-" ใช้เพื่อระบุช่วง ตัวอย่างเช่น: "10-12" หมายถึง "10, 11, 12"
ตัวละคร "," ใช้เพื่อระบุค่าเพิ่มเติม ตัวอย่างเช่น: "Mon, Wed, Fri" หมายถึง "จันทร์วันพุธวันศุกร์" ในสนามสัปดาห์
อักขระ "/" ใช้เพื่อระบุการเพิ่มขึ้น ตัวอย่างเช่น: "0/15" ในฟิลด์ที่สองหมายถึง 0, 15, 30 และ 45 วินาทีต่อนาที "5/15" หมายถึง 5, 20, 35 และ 50 ต่อชั่วโมงในสนามนาที สัญลักษณ์ "" อยู่ก่อน "/" (เช่น:/10) เทียบเท่ากับ 0 ก่อน "/" (เช่น: 0/10) โปรดจำไว้ว่าหนึ่งสาระสำคัญ: แต่ละเขตข้อมูลเชิงตัวเลขของนิพจน์คือชุดของค่าสูงสุดและค่าต่ำสุดเช่น: ชุดของวินาทีและนาทีฟิลด์คือ 0-59 ฟิลด์วันที่คือ 1-31 และฟิลด์เดือนคือ 1-12 อักขระ "/" สามารถช่วยให้คุณได้รับค่าตัวเลขที่สอดคล้องกันในแต่ละฟิลด์อักขระ ตัวอย่างเช่น: "7/6" จะถูกกระตุ้นในเดือนกรกฎาคมเมื่อโดเมนเดือนและไม่ได้หมายถึงทุกเดือนมิถุนายน
l เป็นคำที่ละเว้นสำหรับ 'สุดท้าย' ซึ่งสามารถเป็นตัวแทนของวันทั้งวันและวันของสัปดาห์ แต่ความหมายแตกต่างกันในสองฟิลด์ตัวอย่างเช่นสนามวันของเดือนแสดงถึงวันสุดท้ายของเดือน หากสนามวันของสัปดาห์หมายถึง '7' หรือ 'SAT' หากจำนวนก่อนหน้านี้ในสนามวันของสัปดาห์มันหมายถึงสองสามวันสุดท้ายของเดือนเช่น '6L' หมายถึงวันศุกร์สุดท้ายของเดือน
ตัวละคร "W" อนุญาตให้ฟิลด์วันที่ปรากฏขึ้นเท่านั้น ตัวละครนี้ใช้สำหรับวันทำการล่าสุดของวันที่ระบุ ตัวอย่างเช่น: หากคุณเขียน "15W" ในฟิลด์วันที่นั่นหมายถึง: วันทำการล่าสุดของเดือนนี้ในวันที่ 15 ของเดือนนี้ ดังนั้นหากวันที่ 15 คือวันเสาร์ภารกิจจะถูกกระตุ้นในวันที่ 14 หาก 15 ดีกว่าวันอาทิตย์งานจะถูกกระตุ้นในวันจันทร์นั่นคือวันที่ 16 หากคุณกรอก "1W" ในฟิลด์วันที่แม้ว่าวันที่ 1 คือวันเสาร์งานจะถูกเรียกใช้ในวันจันทร์หน้าเท่านั้นนั่นคือที่ 3 วันทำงานล่าสุดที่ระบุโดยตัวละคร "W" ไม่สามารถข้ามไปยังเดือน ตัวละคร "W" สามารถใช้กับค่าแยกต่างหากเท่านั้นและไม่สามารถเป็นฟิลด์ตัวเลขเช่น: 1-15W ผิด
"L" และ "W" สามารถใช้ร่วมกันในฟิลด์วันที่และ LW แสดงถึงวันทำงานของสัปดาห์สุดท้ายของเดือน
ตัวละคร "#" ได้รับอนุญาตให้ปรากฏในโดเมนวันสัปดาห์เท่านั้น ตัวละครนี้ใช้เพื่อระบุวันที่แน่นอนของเดือน ตัวอย่างเช่น: "6#3" หมายถึงวันศุกร์ของสัปดาห์ที่สามของเดือน (6 หมายถึงวันศุกร์, 3 หมายถึงสัปดาห์ที่ 3) "2#1" หมายถึงวันจันทร์ของสัปดาห์แรกของเดือน "4#5" หมายถึงวันพุธของสัปดาห์ที่ห้า
ตัวละคร "C" ได้รับอนุญาตให้ปรากฏในวันที่และวันของสัปดาห์ ตัวละครนี้อาศัย "ปฏิทิน" ที่ระบุ กล่าวคือค่าของนิพจน์นี้ขึ้นอยู่กับผลการคำนวณของ "ปฏิทิน" ที่เกี่ยวข้อง หากไม่มีการเชื่อมโยง "ปฏิทิน" มันจะเทียบเท่ากับทั้งหมด "ปฏิทิน" ตัวอย่างเช่น: ฟิลด์วันที่คือ "5c" เพื่อระบุวันแรกใน "ปฏิทิน" ที่เกี่ยวข้องหรือ 5 วันสุดท้ายของวันแรกของเดือน วันของสัปดาห์คือ "1c" ซึ่งหมายถึงวันแรกใน "ปฏิทิน" ที่เกี่ยวข้องหรือในวันถัดไปของวันแรกของสัปดาห์นั่นคือวันถัดไปของวันอาทิตย์ (วันจันทร์)
ตัวอย่างการแสดงออก
"0 0 12 * *?" ทริกเกอร์เวลา 12.00 น. ทุกวัน "0 15 10? * *" ทริกเกอร์เวลา 10:15 น. ทุกวัน "0 15 10 * *?" ทริกเกอร์เวลา 10:15 น. ทุกวัน "0 15 10 * *? *" ทริกเกอร์เวลา 10:15 น. ทุกวัน "0 0/5 14 * *? 2005" ถูกกระตุ้นเวลา 10:15 น. ทุกวัน "0 * 14 * *?" ทริกเกอร์เวลา 10:15 น. ทุกวัน "0 0/5 14 * *?" ทริกเกอร์เวลา 14:15 น. ถึง 14:59 น. ทุกวัน "0 0/5 14 * *?" ทริกเกอร์เวลา 14:15 น. ถึง 14:55 น. ทุกวัน "0 0/5 14,18 * *?" ทริกเกอร์ที่ 5 นาทีทุกวันตั้งแต่ 2:15 น. ถึง 14:55 น. ทุกวัน "0 0/5 14,18 * *?" 0 0-5 14 * *? "0 10,44 14? 3 พุธ" 0 10 10 10 10 วันพุธของเดือนมีนาคมทุกปีเวลา 2:10 และ 14:44 น. ในแต่ละปีเวลา 2:10 และ 14:44 น. ในแต่ละปีเวลา 2:10 และ 14:44 น. ในแต่ละปีเวลา 2:10 และ 14:44 น. * วันจันทร์ถึงฟรี "0 15 10 15 *?" 0 15 10 15 *? "0 15 10 15 10 15 *?" 0 15 15 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 * 6L 2002-2005 "ทริกเกอร์เวลา 10:15 น. ในวันศุกร์สุดท้ายของแต่ละเดือนตั้งแต่ปี 2545 ถึง 2548" 0 15 10? * 6#3 "กระตุ้นเวลา 10:15 น. ในวันศุกร์ที่สามของแต่ละเดือน
บทความข้างต้นสปริงรวมควอตซ์เพื่อใช้การกำหนดเวลางานเวลาเป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น