เมื่อใช้ควอตซ์ในการบูตฤดูใบไม้ผลิโดยทั่วไปคุณจะต้องอ้างอิงถั่วที่มีการจัดการฤดูใบไม้ผลิในงานและฉีดโดยอัตโนมัติโดยกำหนดโรงงานงาน
ฤดูใบไม้ผลิมีงานกำหนดเวลาของตัวเอง เมื่อใช้ในการบูตฤดูใบไม้ผลิมันไม่สามารถจัดการงานแบบไดนามิกได้ดังนั้นจึงถูกนำไปใช้โดยใช้ควอตซ์
กำหนดค่าควอตซ์ใน Spring Boot:
นำเข้า java.io.ioexception; นำเข้า java.util.properties; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.beans.factory.config.propertiesfactorybean; org.springframework.context.annotation.configuration; นำเข้า org.springframework.core.io.classpathresource; นำเข้า org.springframework.scheduling.annotation.enablescheduling; org.springframework.scheduling.quartz.schedulerfactorybean;@การกำหนดค่า@enablechedulingingpublic คลาส quartzschedule {@autowired ส่วนตัว myjobfactory myjobfactory; @Bean สาธารณะ SchedulerFactoryBean SchedulerFactoryBean () พ่น IOException {SchedulerFactoryBean Factory = ใหม่ SchedulerFactoryBean (); Factory.SetOverWriteExistingJobs (จริง); // การล่าช้าเริ่มต้น Factory.SetStartUpDelay (20); // โหลดโรงงานการกำหนดค่าแหล่งข้อมูล Quartz Source.SetquartzProperties (QuartzProperties ()); // โรงงานงานที่กำหนดเองสำหรับโรงงานฉีดฤดูใบไม้ผลิ SetJobFactory (MyJobfactory); โรงงานกลับมา; } / ** * โหลดการกำหนดค่าแหล่งข้อมูล Quartz * * @return * @throws ioexception * / @bean คุณสมบัติสาธารณะ QuartzProperties () พ่น IOException {PropertiesFactoryBean PropertiesFactoryBean = PropertiesFactoryBean (); PropertiesFactoryBean.setLocation (ใหม่ classpathresource ("/quartz.properties")); PropertiesFactoryBean.AfterPropertiesset (); PropertiesFactoryBean.getObject (); - เพื่อที่จะใช้ถั่วที่จัดการในฤดูใบไม้ผลิในงานโรงงานงานจะต้องนิยามใหม่:
@ComponentPublic Class MyJobFactory ขยาย AdaptableJobFactory {@autowired ส่วนตัว AutoWireCapableBeanFactory ความสามารถในการใช้งาน; @Override วัตถุที่ได้รับการป้องกัน createJobinStance (TriggerFiredBundle Bundle) โยนข้อยกเว้น {// เรียกวิธีการของคลาสพาเรนต์คลาสวัตถุ JobInstance = super.createJobinstance (Bundle); // ฉีด capablebeanfactory.autowirebean (Jobinstance); กลับ Jobinstance; - จากนั้นคุณสามารถใช้ถั่วที่จัดการสปริงในงาน
คลาสสาธารณะ MyJob ใช้งาน, serializable {ส่วนตัวคงที่สุดท้าย long serialversionuid = 1l; ตัวบันทึกส่วนตัว logger = loggerFactory.getLogger (this.getClass ()); @autowired Private Someservice Someservice; @Override โมฆะสาธารณะดำเนินการ (jobExecutionContext บริบท) พ่น jobExecutionException {someservice.dosomething (); - รหัสต่อไปนี้สร้างงาน:
JobDetail JobDetail = JobBuilder.newJob (((Job) class.forName (job.getClazz ()). newInstance ()). getClass ()) .withIdentity (job.getJobname (), job.getJobGroup ()) JobDetail.getJobDatamap (). ใส่ ("extdata", job.getExtData ()); // การแสดงออก schedulebuilder schedulebuilder = cronschedulebuilder.cronschedule (job.getcronexpression ()) // สร้างทริกเกอร์ TriggerBuilder <Crontrigger> triggerBuilder = triggerBuilder.newtrigger (). Withidentity (TriggerKey). withschedule (กำหนดการ builder); if (job.getStartTime ()! = null) {triggerBuilder.startat (job.getStartTime ()); } if (job.getEndTime ()! = null) {triggerBuilder.endat (job.getEndTime ()); } crontrigger trigger = triggerBuilder.build (); scheduler.schedulejob (jobdetail, trigger); // ฉีดไปยังคลาสการจัดการ ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น