色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JAVA使用quartz添加定時(shí)任務(wù),并依賴注入對(duì)象操作

瀏覽:6日期:2022-08-23 18:38:43

最近在寫(xiě)定時(shí)任務(wù),以前沒(méi)接觸過(guò)。查了些相關(guān)資料說(shuō)使用quartz定時(shí)框架。

需要配置文件:config-quartz.xml

相關(guān)配置如下(紅色部分是之后添加的,在后面步驟會(huì)說(shuō)明):

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context' xsi:schemaLocation=' http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd'> <bean class='org.springframework.scheduling.quartz.SchedulerFactoryBean'> <property name='schedulerName' value='rqmis'></property> <property name='applicationContextSchedulerContextKey' value='applicationContextKey' /> <property name='configLocation' value='classpath:quartz.properties' /> <property name='autoStartup' value='true'></property> <property name='triggers'> <list> <bean class='org.springframework.scheduling.quartz.CronTriggerFactoryBean'> <property name='cronExpression' value='0 0 0 * * ?'></property> <property name='jobDetail'> <bean class='org.springframework.scheduling.quartz.JobDetailFactoryBean'> <property name='jobClass' value='com.wy.care60.job.HealthPlanJob' /> </bean> </property> </bean> </list> </property> </bean> <!--</property> </bean>--> </beans>

quartz.properties

#============================================================================# Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName = WrhFrameSchedulerorg.quartz.scheduler.instanceId = AUTO org.quartz.scheduler.skipUpdateCheck = true #============================================================================# Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 12org.quartz.threadPool.threadPriority = 5 #============================================================================# Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate#org.quartz.jobStore.useProperties = false#org.quartz.jobStore.dataSource = myDS#org.quartz.jobStore.tablePrefix = QRTZ_#org.quartz.jobStore.isClustered = false #============================================================================# Configure Datasources #============================================================================ #org.quartz.dataSource.myDS.driver = org.postgresql.Driver#org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost/dev#org.quartz.dataSource.myDS.user = jhouse#org.quartz.dataSource.myDS.password = #org.quartz.dataSource.myDS.maxConnections = 5

最后spring-mvc.xml配置文件中獎(jiǎng)quartz.xml文件引入即可:

<import resource='config-quartz.xml'></import>

然后寫(xiě)測(cè)試類開(kāi)始測(cè)試定時(shí)任務(wù):

package com.wy.care60.job; import com.wy.care60.dao.MElementMapper;import com.wy.care60.dao.MInterEnumMapper;import com.wy.care60.dao.MProjectMapper;import com.wy.care60.model.MInterEnum;import com.wy.care60.model.MProject;import org.apache.tools.ant.Project;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.quartz.QuartzJobBean;import org.springframework.stereotype.Component; import javax.annotation.Resource;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List; /** * Created by Administrator on 2017/12/20. */@Componentpublic class HealthPlanJob extends QuartzJobBean { @Autowired MProjectMapper mProjectMapper; @Override public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println(new Date()); } }

發(fā)現(xiàn)時(shí)間可以打印出來(lái),證明定時(shí)任務(wù)成功開(kāi)啟;但是同時(shí)也發(fā)現(xiàn)了一個(gè)問(wèn)題,就是依賴注入的 mProjectMapper值為null。

開(kāi)始以為是Spring的原因,導(dǎo)致注解失敗,后來(lái)查了相關(guān)資料發(fā)現(xiàn),不是Spring的原因,而是因?yàn)椋哼@個(gè)Job是由quartz實(shí)例化出來(lái)的,不受Spring的管理,所以就導(dǎo)致注入失敗。解決辦法是自己new一個(gè)類,讓Spring實(shí)例化這個(gè)類,代碼如下

import org.quartz.spi.TriggerFiredBundle;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.config.AutowireCapableBeanFactory;import org.springframework.scheduling.quartz.AdaptableJobFactory; public class MyJobFactory extends AdaptableJobFactory { @Autowired private AutowireCapableBeanFactory capableBeanFactory; protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { //調(diào)用父類的方法 Object jobInstance = super.createJobInstance(bundle); capableBeanFactory.autowireBean(jobInstance); return jobInstance; } }

然后把這個(gè)類配置到Spring中去,(config-quartz.xml中紅色部分)

<bean class='com.wy.care60.job.MyJobFactory'></bean>

然后在把org.springframework.scheduling.quartz.SchedulerFactoryBean的jobFactory設(shè)置成我們自己的。(config-quartz.xml中紅色部分)

<bean name='MyScheduler' class='org.springframework.scheduling.quartz.SchedulerFactoryBean'><!-- 其他屬性省略 --><property name='jobFactory' ref='jobFactory'></property></bean>

config-quartz.xml完整版如下:

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context' xsi:schemaLocation=' http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd'> <bean class='com.wy.care60.job.MyJobFactory'></bean> <bean class='org.springframework.scheduling.quartz.SchedulerFactoryBean'> <property name='schedulerName' value='rqmis'></property> <property name='applicationContextSchedulerContextKey' value='applicationContextKey' /> <property name='configLocation' value='classpath:quartz.properties' /> <property name='autoStartup' value='true'></property> <property name='jobFactory' ref='jobFactory'></property> <property name='triggers'> <list> <bean class='org.springframework.scheduling.quartz.CronTriggerFactoryBean'> <property name='cronExpression' value='0 0 0 * * ?'></property> <property name='jobDetail'> <bean class='org.springframework.scheduling.quartz.JobDetailFactoryBean'> <property name='jobClass' value='com.wy.care60.job.HealthPlanJob' /> </bean> </property> </bean> </list> </property> </bean> <!--</property> </bean>--> </beans>

到這為止,成功!

以上這篇JAVA使用quartz添加定時(shí)任務(wù),并依賴注入對(duì)象操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
主站蜘蛛池模板: 玖草在线视频 | 国产精品自在自线亚洲 | 在线观看免费毛片 | 国产在线不卡午夜精品2021 | 91精品91久久久久久 | 日本乱人伦片中文字幕三区 | 国模在线播放 | 特级黄色毛片视频 | 精品久久免费视频 | 又摸又揉又黄又爽的视频 | 中文字幕曰韩一区二区不卡 | 日本强不卡在线观看 | 国产亚洲精品一区二区在线播放 | 日韩中文字 | 国产东北色老头老太性视频 | 一级毛片在线视频 | 国产免费专区 | 日韩视频在线观看中字 | 欧美一级片免费 | 日本波多野结衣在线 | 美国一级毛片片aa成人 | 久久99久久99精品免观看 | 亚洲精品国产综合久久一线 | 久久久成人啪啪免费网站 | 欧美老妇b| 黄色三级三级三级免费看 | 国产精品第五页 | 亚洲国产一区在线二区三区 | 亚洲b| 国产日产高清欧美一区二区三区 | 特级淫片日本高清视频 | 欧美日韩精彩视频 | 日黄网站| 国产高清精品毛片基地 | 巴西一级毛片 | 韩国美女爽快一级毛片黄 | 波多野结衣在线视频观看 | 久青草视频在线 | 性夜黄a爽爽免费视频国产 性夜影院爽黄a爽免费看网站 | 亚洲精品h | a级片在线免费观看 |