quartz定时器依赖_JAVA使用quartz添加定时任务,并依赖注入对象操作
最近在写定时任务,以前没接触过。查了些相关资料说使用quartz定时框架。
需要配置文件:config-quartz.xml
相关配置如下(红色部分是之后添加的,在后面步骤会说明):
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">
quartz.properties
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = WrhFrameScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.skipUpdateCheck = true
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 12
org.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文件引入即可:
然后写测试类开始测试定时任务:
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.
*/
@Component
public 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中红色部分)
然后在把org.springframework.scheduling.quartz.SchedulerFactoryBean的jobFactory设置成我们自己的。(config-quartz.xml中红色部分)
config-quartz.xml完整版如下:
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">
到这为止,成功!
以上这篇JAVA使用quartz添加定时任务,并依赖注入对象操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
quartz定时器依赖_JAVA使用quartz添加定时任务,并依赖注入对象操作相关推荐
- android 无法添加依赖关系,Android无法添加aop库依赖
gradle版本4.4 在app的build.gradle中添加如下两个依赖 debugImplementation 'com.didichuxing.doraemonkit:doraemonkit: ...
- java 包依赖_java命令执行带jar包依赖的文件执行不了
import org.apache.commons.io.FilenameUtils; public class Test { public static void main(String[] arg ...
- 第9章 Quartz定时器和发送Email
开心一笑 [从年初的一无所有,到年终的身无分文,唉,我这不忘初心...] 新书购买 戳图购买 >>> 9.1 使用Quartz定时器 9.1.1 Quartz概述 Quartz是一个 ...
- Quartz定时器与定时任务知识概括
Quartz定时器与定时任务知识概括 定时任务调度 其他定时器 Quartz简介 Quartz简单入门 Spring和Quartz集成 SSMM和Quartz集成 Quartz集群 Quartz配置 ...
- java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql
系统用来每天插入视图数据... 一.数据库表设计 1.接口配置表(t_m_db_interface_config) 2.接口日志表(t_m_db_interface_log) 3.前端配置页面 查询页 ...
- quartz mysql索引_分布式系统中的定时任务全解(二)
在实际项目中,通常需要用到定时任务(定时作业),spring框架提供了很好的实现. 1. 下载spring-quartz插件包 这里默认当前系统中是集成了spring框架的基本功能的.去网上下载sp ...
- spring中配置quartz定时器
spring中配置quartz定时器 最近项目中用到定时器,项目用的spring所以想在spring中配置一下定时器,看到网上用quartz的比较多,所以就搜了一下.参考:http://blog.cs ...
- 个人博客系统开发总结之 quartz定时器
一个可以自己配置,即配即用的quartz定时器封装. pom.xml配置 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler ...
- java quartz管理,SpringBoot中使用Quartz管理定时任务的方法
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任 ...
最新文章
- 本地nginx多域名映射
- P1912 [NOI2009]诗人小G
- hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
- 今天一早来打开IDEA,全面飘红,所有的含有import语句的文件都会报错
- jzoj1402-偷懒的小X【贪心】
- 解决Based on configured schedule, the given trigger ‘triggerGroupName_FREEZE_JOB.triggerName_FREEZE...
- 为什么使用%lf读取double型的值,而用%f进行显示?
- Kaggle 数据清洗挑战 Day 4 - 字符编码(Character Encoding)处理
- Linux -- 基于zookeeper的java api(二)
- 数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”
- requestAnimationFrame()方法实现帧动画
- elf section类型_ELF 转二进制(2/4): 允许把 Binary 文件加载到任意位置
- matlab画图分区_matlab 经典作图
- 我国计算机操作系统开发历史及现状(软件学报格式的本文WORD文档在作者主页)
- 华为p20位置服务器在哪打开,华为p20在哪里打开北斗定位 | 手游网游页游攻略大全...
- Java源码阅读--任重而道远(lang)
- zabbix 5.0所有依赖包_最详细的 Zabbix 使用教程
- React 18 的七大更新点你知道几个?
- 直播的下个关键词会是“美好”吗?
- 华为android是什么手机,为什么说华为的麒麟810是一代神U?
热门文章
- 计算机计算能力共享,服务器计算能力计算器
- android高级编程实操期末机试试题,《网络高级编程》201001机考试题A
- linux下编译httpd,Linux下编译安装Apache httpd 2.4
- java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
- Diversity HDU - 6725
- E - 连连看 HDU - 1175(思维的深搜)
- Hot Door CADtools (基础篇)
- PAT_B_1092_Java(15分)_C++(20分)
- python七段数码管绘制单个数字_#Python语言程序设计Demo - 七段数码管绘制
- linux桌面显示温度,请问ubuntu下有没有什么桌面小控件现实显卡温度cpu使用率之类的...