电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JAVA使用quartz添加定時任務,并依賴注入對象操作

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

最近在寫定時任務,以前沒接觸過。查了些相關資料說使用quartz定時框架。

需要配置文件: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='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配置文件中獎quartz.xml文件引入即可:

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

然后寫測試類開始測試定時任務:

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()); } }

發現時間可以打印出來,證明定時任務成功開啟;但是同時也發現了一個問題,就是依賴注入的 mProjectMapper值為null。

開始以為是Spring的原因,導致注解失敗,后來查了相關資料發現,不是Spring的原因,而是因為:這個Job是由quartz實例化出來的,不受Spring的管理,所以就導致注入失敗。解決辦法是自己new一個類,讓Spring實例化這個類,代碼如下

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 { //調用父類的方法 Object jobInstance = super.createJobInstance(bundle); capableBeanFactory.autowireBean(jobInstance); return jobInstance; } }

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

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

然后在把org.springframework.scheduling.quartz.SchedulerFactoryBean的jobFactory設置成我們自己的。(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添加定時任務,并依賴注入對象操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
主站蜘蛛池模板: 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | RFID电子标签厂家-上海尼太普电子有限公司| 福建省教师资格证-福建教师资格证考试网 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 低合金板|安阳低合金板|河南低合金板|高强度板|桥梁板_安阳润兴 北京租车牌|京牌指标租赁|小客车指标出租 | 电机保护器-电动机综合保护器-浙江开民| 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | CE认证_产品欧盟ROHS-REACH检测机构-商通检测 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 江西自考网-江西自学考试网| 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 博客-悦享汽车品质生活 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 |