Spring Boot에서 Quartz를 사용할 때는 일반적으로 작업에서 스프링 관리 콩을 참조하고 작업 공장을 정의하여 자동으로 주입해야합니다.
봄에는 자체 일정 타이밍 작업이 있습니다. Spring Boot에서 사용하면 작업을 동적으로 관리 할 수 없으므로 Quartz를 사용하여 구현됩니다.
스프링 부팅에서 석영 구성 :
import java.io.ioexception; import java.util.properties; import org.springframework.bean.beans.annotation.autowired; import org.springframework.beans.config.propertiesseftorybean; import org.springframework.context.annotation.bean; org.springframework.context.annotation.configuration; import org.springframework.core.io.classpathresource; import org.springframework.scheduling.annotation.enablescheduling; import org.springframework.scheduling.quartz.schedulerfactorybean;@configuration@enableschedulingpublic class quartzschedule {@autowired private myjobfactory myjobfactory; @bean public schedulerfactorybean schedulerfactorybean ()는 ioexception {schedulerfactorybean factory = new schedulerfactorybean (); 공장. // 지연 시작 팩토리. 세트 스타트 updelay (20); // Quartz 데이터 소스 구성 팩토리로드 .SetquartzProperties (QuartzProperties ()); // Spring Injection Factory를위한 맞춤형 작업 공장 .SetJobFactory (MyJobFactory); 반품 공장; } / ** * Quartz 데이터 소스 구성 * * @return * @throws ioexception * / @bean public properties quartzproperties ()는 ioexception {propertiesfactiforyBean propertiesFactoryBean = new PropertiesFactoryBean (); PropertiesFactoryBean.setLocation (New ClassPathResource ( "/Quartz.properties")); propertiesfictoryBean.afterProperTiesset (); return propertiesfictoryBean.getObject (); }} 작업에서 스프링 관리 콩을 사용하려면 작업 공장을 재정의해야합니다.
@ComponentPublic Class MyJobFactory 확장 adaptablejobfactory {@autowired private autowerecapablebeanfactory pablebeanfactory; @override Protected Object CreateJobinstance (TriggerFiredBundle Bundle) Exception {// 부모 클래스 개체의 메소드 호출 jobInstance = super.createJobinstance (번들); // aboutableBeanFactory를 주입합니다 .Autowirebean (jobinstance); jobinstance를 반환; }} 그런 다음 작업에서 Spring Managed Beans를 사용할 수 있습니다.
공개 클래스 MyJob는 작업, 직렬화 가능한 {개인 정적 최종 Long SerialversionUID = 1L; 개인 로거 로거 = loggerfactory.getLogger (this.getClass ()); @autowired private someservice someservice; @override public void execute (jobExecutionContext Context) jobExecutionException {someservice.dosomething (); }} 다음 코드는 작업을 만듭니다.
jobDetail jobDetail = jobBuilder.newjob (((job) class.forname (job.getClazz ()). newInstance ()). getClass ()). jobDetail.getJobdatamap (). put ( "extData", job.getextData ()); // 표현식 ScheduleBuilder ScheduleBuilder = CronScheduleBuilder.CronSchedule (job.getCroneXpression ()). // 트리거 트리거 빌더 <Crontrigger> triggerBuilder = triggerBuilder.newtrigger (). withidentity (triggerkey). 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을 더 지원하기를 바랍니다.