最近在写定时任务,以前没接触过。查了些相关资料说使用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添加定时任务,并依赖注入对象操作相关推荐

  1. android 无法添加依赖关系,Android无法添加aop库依赖

    gradle版本4.4 在app的build.gradle中添加如下两个依赖 debugImplementation 'com.didichuxing.doraemonkit:doraemonkit: ...

  2. java 包依赖_java命令执行带jar包依赖的文件执行不了

    import org.apache.commons.io.FilenameUtils; public class Test { public static void main(String[] arg ...

  3. 第9章 Quartz定时器和发送Email

    开心一笑 [从年初的一无所有,到年终的身无分文,唉,我这不忘初心...] 新书购买 戳图购买 >>> 9.1 使用Quartz定时器 9.1.1 Quartz概述 Quartz是一个 ...

  4. Quartz定时器与定时任务知识概括

    Quartz定时器与定时任务知识概括 定时任务调度 其他定时器 Quartz简介 Quartz简单入门 Spring和Quartz集成 SSMM和Quartz集成 Quartz集群 Quartz配置 ...

  5. java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql

    系统用来每天插入视图数据... 一.数据库表设计 1.接口配置表(t_m_db_interface_config) 2.接口日志表(t_m_db_interface_log) 3.前端配置页面 查询页 ...

  6. quartz mysql索引_分布式系统中的定时任务全解(二)

    在实际项目中,通常需要用到定时任务(定时作业),spring框架提供了很好的实现. 1.  下载spring-quartz插件包 这里默认当前系统中是集成了spring框架的基本功能的.去网上下载sp ...

  7. spring中配置quartz定时器

    spring中配置quartz定时器 最近项目中用到定时器,项目用的spring所以想在spring中配置一下定时器,看到网上用quartz的比较多,所以就搜了一下.参考:http://blog.cs ...

  8. 个人博客系统开发总结之 quartz定时器

    一个可以自己配置,即配即用的quartz定时器封装. pom.xml配置 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler ...

  9. java quartz管理,SpringBoot中使用Quartz管理定时任务的方法

    定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任 ...

最新文章

  1. 本地nginx多域名映射
  2. P1912 [NOI2009]诗人小G
  3. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  4. 今天一早来打开IDEA,全面飘红,所有的含有import语句的文件都会报错
  5. jzoj1402-偷懒的小X【贪心】
  6. 解决Based on configured schedule, the given trigger ‘triggerGroupName_FREEZE_JOB.triggerName_FREEZE...
  7. 为什么使用%lf读取double型的值,而用%f进行显示?
  8. Kaggle 数据清洗挑战 Day 4 - 字符编码(Character Encoding)处理
  9. Linux -- 基于zookeeper的java api(二)
  10. 数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”
  11. requestAnimationFrame()方法实现帧动画
  12. elf section类型_ELF 转二进制(2/4): 允许把 Binary 文件加载到任意位置
  13. matlab画图分区_matlab 经典作图
  14. 我国计算机操作系统开发历史及现状(软件学报格式的本文WORD文档在作者主页)
  15. 华为p20位置服务器在哪打开,华为p20在哪里打开北斗定位 | 手游网游页游攻略大全...
  16. Java源码阅读--任重而道远(lang)
  17. zabbix 5.0所有依赖包_最详细的 Zabbix 使用教程
  18. React 18 的七大更新点你知道几个?
  19. 直播的下个关键词会是“美好”吗?
  20. 华为android是什么手机,为什么说华为的麒麟810是一代神U?

热门文章

  1. 计算机计算能力共享,服务器计算能力计算器
  2. android高级编程实操期末机试试题,《网络高级编程》201001机考试题A
  3. linux下编译httpd,Linux下编译安装Apache httpd 2.4
  4. java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
  5. Diversity HDU - 6725
  6. E - 连连看 HDU - 1175(思维的深搜)
  7. Hot Door CADtools (基础篇)
  8. PAT_B_1092_Java(15分)_C++(20分)
  9. python七段数码管绘制单个数字_#Python语言程序设计Demo - 七段数码管绘制
  10. linux桌面显示温度,请问ubuntu下有没有什么桌面小控件现实显卡温度cpu使用率之类的...