Spring Bootでクォーツを使用する場合、通常、ジョブで春に管理された豆を参照し、ジョブファクトリーを定義して自動的に注入する必要があります。
Springには独自のスケジュールタイミングタスクがあります。 Spring Bootで使用する場合、ジョブを動的に管理できないため、Quartzを使用して実装されます。
Spring BootでQuartzを構成します:
java.io.ioexception; import java.util.properties; Import org.springframework.beans.factory.annotation.autowired; Import org.springframework.beans.factory.config.propertiesfactorybean; Import org.springframework.context.annotation.annotation.buntation.bun org.springframework.context.annotation.configuration; Import org.springframework.core.classpathResource; Import org.springframework.scheduling.annotation.enableScheduling; Import org.springframework.scheduling.scartz.schedulerfactugation.schedulefractuged.schedurefractugation.schedurefractugationクラスQuartzschedule {@autowired private myjobfactory myjobfactory; @bean public Schedulerfactorybean schedulerfactorybean()throws ioexception {schedulerfactorybean factory = new SchedulerFactoryBean(); Factory.SetOverWriteExistingJobs(true); //起動factory.setstartupdelay(20)を遅延します。 // Quartzデータソース構成Factory.setQuartzProperties(QuartzProperties())をロードします。 //スプリングインジェクションファクトリー用のカスタムジョブファクトリー。SetJobFactory(MyJobFactory);ファクトリーを返します。 } / ** * Quartzデータソース構成を読みます * * @return * @throws ioexception * / @bean public Properties quartzproperties()throws ioexception {propertiesFactoryBean PropertiesFactoryBean = new PropertiesFactoryBean(); propertiesFactoryBean.SetLocation(new ClassPathResource( "/Quartz.Properties")); propertiesFactoryBean.AfterPropertiesset(); return propertiesfactorybean.getObject(); }}仕事で春に管理された豆を使用するには、ジョブファクトリーを再定義する必要があります。
@componentPublic class myjobfactory extends adaptablejobfactory {@autowired private autowirecapablebeanfactory capablebeanfactory; @Override保護されたオブジェクトCreateJobinStance(triggerfiredBundleバンドル)スロー例外{//親クラスオブジェクトのメソッドを呼び出してくださいjobinstance = super.createjobinstance(bundle); // capablebeanfactory.autowirebean(jobinstance); Instanceを返す; }}その後、仕事で春のマネージドビーンズを使用できます
パブリッククラスMyJobはジョブを実装し、シリアル化可能{private static final long serialversionuid = 1l; Private Logger Logger = loggerFactory.getLogger(this.getClass()); @Autowired Private SomeSorvice SomeService; @Override public void execute(jobexecutionContextコンテキスト)jobexecutionexception {someservice.dosomething(); }}次のコードがジョブを作成します。
jobdetail jobdetail = jobbuilder.newjob(((job)class.forname(job.getclazz())。newinstance())。getclass()).withidentity(job.getjobname()、job.getjobgroup())。 jobdetail.getjobdatamap()。put( "extdata"、job.getextData()); // ScheduleBuilder scheduleBuilder = cronscheduleBuilder.cronschedule(job.getCronexpression()).withmisfireHandlingInstructionDonothing(); //トリガーを作成するtriggerbuilder <crontrigger> triggerbuilder = triggerbuilder.newtrigger()。 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をもっとサポートすることを願っています。