使用spring整合Quartz实现—定时器(Maven项目做演示)

不基于特定的基类的方法


一,开发环境以及依赖的jar包

    Spring 4.2.6.RELEASE

    Maven 3.3.9

    Jdk 1.7

    Idea 15.04

二,不可少的jar依赖(添加在maven项目里面的pom.xml文件里面)

   

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-context-support</artifactId>
  4. <version>4.2.6.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.quartz-scheduler</groupId>
  8. <artifactId>quartz</artifactId>
  9. <version>2.2.1</version>
    </dependency>

三,实现定时器时使用到的文件:

     planWorkExcute.java    --定时器执行的类

     spring-plan.xml    --配置定时器信息的xml

四,实现定时器步骤:

   1,创建 planWorkExcute.java文件  ,在   cc.royao.plantask   包下。      

  1. package cc.royao.plantask;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.concurrent.ExecutorService;
  9. import java.util.concurrent.Executors;
  10.  
  11. import org.apache.log4j.Logger;//可以删除
  12. import org.springframework.beans.factory.annotation.Autowired;
  13.  
  14. public class PlanWorkExecute {
  15. Logger logger = Logger.getLogger(this.getClass());//logger打印日志,可以去掉
  16.  
  17. /**
  18. * 定时器执行的方法
  19. */
  20. public synchronized void withdrawNoAuditTask() {
  21. SimpleDateFormat outFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  22. System.out.println("开始提现免审核任务-------------------------------" + outFormat.format(new Date()));
  23. logger.info("开始提现免审核任务-------------------------------");
  24.  
  25. System.out.println("结束提现免审核任务-------------------------------" + outFormat.format(new Date()));
  26. logger.info("结束提现免审核任务-------------------------------");
  27. }
  28.  
  29. }

  2,创建spring-plan.xml  配置文件  注:创建一个定时器的配置文件就行,如果需要多个定时器,直接在spring-plan.xml添加 bean和定义定时器类的方法就行,不需要创建多个xml,

      · 关于那个定时器多久执行的   Cron表达式 可以参考: https://www.cnblogs.com/javahr/p/8318728.html

      ·有在线生成表达式的网址:http://cron.qqe2.com/

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
  6. default-lazy-init="false">
  7. <bean id="job1" class="cc.royao.plantask.PlanWorkExecute" /><!-- 修改为你的定时类的路径 -->
  8. <!-- 可以创建多个定时bean -->
  9. <bean id="jobDetail_1"
  10. class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  11. <property name="targetObject">
  12. <ref bean="job1" />
  13. </property>
  14. <property name="targetMethod">
  15. <value>withdrawNoAuditTask</value><!-- 定时器类的方法名-->
  16. </property>
  17. </bean>
  18.  
  19. <bean id="cronTrigger_1"
  20. class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  21. <property name="jobDetail">
  22. <ref bean="jobDetail_1" /> <!-- 这里对应上面bean-->
  23. </property>
  24. <property name="cronExpression">
  25. <value>0/2 * * * * ?</value><!-- 0 10 0 * * ? 每天0:10执行 -->
  26. </property>
  27. </bean>
  28.  
  29. <bean
  30. class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  31. <property name="triggers">
  32. <list>
  33.  
  34. <ref local="cronTrigger_1" /> <!-- 每加一个定时器这里也要加-->
  35.  
  36. </list>
  37. </property>
  38. </bean>
  39. </beans>

  3,需要在  applicationContext.xml 中引入  spring-plan.xml    以下代码重点在最下

  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:jee="http://www.springframework.org/schema/jee"
  4. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xmlns:cache="http://www.springframework.org/schema/cache"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  8. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
  10. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"
  11. default-lazy-init="true">
  12.  
  13. <!-- 加载系统properties文件配置 -->
  14. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  15. <property name="locations">
  16. <list>
  17. <value>WEB-INF/jdbc.properties</value>
  18. <!-- <value>WEB-INF/sms.properties</value> -->
  19. </list>
  20. </property>
  21. </bean>
  22.  
  23. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  24. <property name="driverClassName">
  25. <value>${jdbc.driverClass}</value>
  26. </property>
  27. <!--<property name="defaultAutoCommit" value="false"/>-->
  28. <property name="url">
  29. <value>jdbc:mysql://192.168.14.239:3306/test?useUnicode=true&amp;characterEncoding=utf-8</value>
  30. </property>
  31. <property name="username">
  32. <value>${jdbc.username}</value>
  33. </property>
  34. <property name="password">
  35. <value>${jdbc.password}</value>
  36. </property>
  37. <property name="maxActive">
  38. <value>20</value>
  39. </property>
  40. <property name="maxIdle">
  41. <value>60</value>
  42. </property>
  43. <property name="maxWait">
  44. <value>20000</value>
  45. <!-- 0 -->
  46. </property>
  47. <property name="removeAbandoned">
  48. <value>true</value>
  49. </property>
  50. <property name="removeAbandonedTimeout">
  51. <value>6000000</value>
  52. <!-- 180 -->
  53. </property>
  54. <!-- add -->
  55. <property name="validationQuery" value="SELECT 1"></property>
  56. <property name="testWhileIdle" value="true"></property>
  57. <property name="testOnBorrow" value="true"></property>
  58. <property name="timeBetweenEvictionRunsMillis" value="3600000"></property>
  59. <property name="numTestsPerEvictionRun" value="50"></property>
  60. <property name="minEvictableIdleTimeMillis" value="120000"></property>
  61. <!-- add -->
  62. </bean>
  63.  
  64. <!-- SqlSessionFactory -->
  65. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  66. <property name="dataSource" ref="dataSource"/>
  67. </bean>
  68.  
  69. <bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
  70. <property name="corePoolSize" value="1"/>
  71. <property name="maxPoolSize" value="10"/>
  72. <property name="keepAliveSeconds" value="300"/>
  73. <property name="queueCapacity" value="50"/>
  74. <property name="WaitForTasksToCompleteOnShutdown" value="true"/>
  75. </bean>
  76.  
  77. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  78. <property name="dataSource" ref="dataSource"></property>
  79. </bean>
  80.  
  81. <!--&lt;!&ndash; 自动扫描service实现 &ndash;&gt;-->
  82. <!--<context:component-scan base-package="com.royao">-->
  83. <!--<context:include-filter type="regex"-->
  84. <!--expression="com.royao.services.*" />-->
  85. <!--</context:component-scan>-->
  86.  
  87. <aop:config proxy-target-class="true">
  88. <aop:pointcut id="serviceOperation" expression="execution(* cc.royao.mana.auth.service.*.impl.*ServiceImpl.*(..))"/>
  89. <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/>
  90. </aop:config>
  91.  
  92. <!-- 配置事务通知 -->
  93. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  94. <tx:attributes>
  95. <tx:method name="*" rollback-for="Exception"/>
  96. </tx:attributes>
  97. </tx:advice>
  98.  
  99. <tx:advice id="transactionManagerAdivice" transaction-manager="transactionManager">
  100. <tx:attributes>
  101. <tx:method name="*insert*" propagation="REQUIRED"/>
  102. <tx:method name="*add*" propagation="REQUIRED"/>
  103. <tx:method name="*update*" propagation="REQUIRED"/>
  104. <tx:method name="*Update*" propagation="REQUIRED"/>
  105. <tx:method name="*del*" propagation="REQUIRED"/>
  106. <tx:method name="*create*" propagation="REQUIRED"/>
  107.  
  108. <tx:method name="doApproved" propagation="REQUIRED"/>
  109. <tx:method name="batchDelFm" propagation="REQUIRED"/>
  110. <tx:method name="editTemplate" propagation="REQUIRED"/>
  111. <tx:method name="dummyDelete" propagation="REQUIRED"/>
  112. <tx:method name="batchDelUser" propagation="REQUIRED"/>
  113. <!--<tx:method name="*" propagation="REQUIRED"/>-->
  114. </tx:attributes>
  115. </tx:advice>
  116.  
  117. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  118.  
  119. <property name="basePackage">
  120. <value>cc.royao.mana.auth.mapper.*</value>
  121. </property>
  122. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  123.  
  124. </bean>
  125.  
  126. <import resource="application-servlet.xml"/>
  127.  
  128.   <!-- 重点在这里 ,我把整个xml文件内容复制出来,怕你们不知道插入在哪里-->
  129. <import resource="spring-plan.xml"/>
  1.  
  1.  
  2. </beans>

这样就ok了,有不懂的地方可以加作者的QQ1983127490

使用spring整合Quartz实现—定时器的更多相关文章

  1. Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)

    Spring整合Quartz定时任务 在集群.分布式系统中的应用(Mysql数据库环境)   转载:http://www.cnblogs.com/jiafuwei/p/6145280.html 单个Q ...

  2. Spring整合Quartz (cronTrigger和simpleTrigger实现方法)

    Spring整合Quartz (cronTrigger和simpleTrigger实现方法) 之前有记录过一次springboot整合Quartz的文章,由于偶尔一次自己使用spring需要整合Qua ...

  3. 使用Spring整合Quartz轻松完成定时任务

    一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...

  4. spring整合quartz并持久化

    spring整合quartz有两种方式: 一.常见是使用配置文件,将定时任务保存到内存中 简单示例: <!-- 短信催还提醒任务调度 --> <bean id="overd ...

  5. Spring整合Quartz定时任务执行2次,Spring定时任务执行2次

    Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...

  6. spring整合quartz时间任务调度框架

    spring整合quartz框架 1.创建maven工程 2.导入jar包(pom.xml) <dependencies> <dependency> <groupId&g ...

  7. Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入

    Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入 Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入 >> ...

  8. Spring整合Quartz分布式调度

    前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...

  9. Spring整合Quartz分布式调度(山东数漫江湖)

    前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...

随机推荐

  1. 在centos7上搭建博客之小白教程~

    原理 http使用方法一编译安装,php模块打入方式实现. 软件版本 在本次实验中,我们需要用到的软件版本如下: apr-1.6.2 apr-util-1.6.0 httpd-2.4.28 maria ...

  2. Test随笔

    测试一级主题 测试二级主题 测试内容,修改会不会出现历史记录

  3. week6:Diagnosing Bias vs. Variance难点记录

    1.Bias vs. Variance是什么概念? 图形上的理解:https://www.zhihu.com/question/27068705          http://blog.csdn.n ...

  4. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUser' in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :

    Running TestSuite [TestNG] [WARN] Ignoring duplicate listener : org.uncommons.reportng.HTMLReporter ...

  5. java学习笔记-JavaWeb篇三

    63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...

  6. 为Python加入默认模块搜索路径

    为Python加入默认模块搜索路径 方法一:函数加入 1) import sys 2) 查看sys.path 3) 加入sys.path.append("c:\\") 方法二:改动 ...

  7. UITableViewCell的父视图

    最近版本测试阶段,发现一个奇怪的问题,以前在A测试机上出现的崩溃bug,解决后今天在B测试机上又出现了,在B上解决完之后,返回到设备A上发现又不行了.最后调试发现是测试设备系统版本不同导致的,A设备是 ...

  8. SQL基础语法的单表操作 select|insert|update|delete(增删改查) 简单使用

    以下案列以此表举例 1.select(查询) select简单的查询分为两种 注:字段也就是表结构中的列的名称 第一种: select  字段名  from  表名 此种查询只列出你所需要查询的字段, ...

  9. 能够让你装逼的10个Python小技巧

      列表推导式 你有一个list: bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这 ...

  10. jQuery带缩略图轮播效果图片切换带缩略图

    以上为效果图 HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...