使用spring整合Quartz实现—定时器
使用spring整合Quartz实现—定时器(Maven项目做演示)
不基于特定的基类的方法
一,开发环境以及依赖的jar包
Spring 4.2.6.RELEASE
Maven 3.3.9
Jdk 1.7
Idea 15.04
二,不可少的jar依赖(添加在maven项目里面的pom.xml文件里面)
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>4.2.6.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- <version>2.2.1</version>
</dependency>
三,实现定时器时使用到的文件:
planWorkExcute.java --定时器执行的类
spring-plan.xml --配置定时器信息的xml
四,实现定时器步骤:
1,创建 planWorkExcute.java文件 ,在 cc.royao.plantask 包下。
- package cc.royao.plantask;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import org.apache.log4j.Logger;//可以删除
- import org.springframework.beans.factory.annotation.Autowired;
- public class PlanWorkExecute {
- Logger logger = Logger.getLogger(this.getClass());//logger打印日志,可以去掉
- /**
- * 定时器执行的方法
- */
- public synchronized void withdrawNoAuditTask() {
- SimpleDateFormat outFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
- System.out.println("开始提现免审核任务-------------------------------" + outFormat.format(new Date()));
- logger.info("开始提现免审核任务-------------------------------");
- System.out.println("结束提现免审核任务-------------------------------" + outFormat.format(new Date()));
- logger.info("结束提现免审核任务-------------------------------");
- }
- }
2,创建spring-plan.xml 配置文件 注:创建一个定时器的配置文件就行,如果需要多个定时器,直接在spring-plan.xml添加 bean和定义定时器类的方法就行,不需要创建多个xml,
· 关于那个定时器多久执行的 Cron表达式 可以参考: https://www.cnblogs.com/javahr/p/8318728.html
·有在线生成表达式的网址:http://cron.qqe2.com/
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="false">
- <bean id="job1" class="cc.royao.plantask.PlanWorkExecute" /><!-- 修改为你的定时类的路径 -->
- <!-- 可以创建多个定时bean -->
- <bean id="jobDetail_1"
- class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="job1" />
- </property>
- <property name="targetMethod">
- <value>withdrawNoAuditTask</value><!-- 定时器类的方法名-->
- </property>
- </bean>
- <bean id="cronTrigger_1"
- class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="jobDetail_1" /> <!-- 这里对应上面bean-->
- </property>
- <property name="cronExpression">
- <value>0/2 * * * * ?</value><!-- 0 10 0 * * ? 每天0:10执行 -->
- </property>
- </bean>
- <bean
- class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref local="cronTrigger_1" /> <!-- 每加一个定时器这里也要加-->
- </list>
- </property>
- </bean>
- </beans>
3,需要在 applicationContext.xml 中引入 spring-plan.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:jee="http://www.springframework.org/schema/jee"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:cache="http://www.springframework.org/schema/cache"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- 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"
- default-lazy-init="true">
- <!-- 加载系统properties文件配置 -->
- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>WEB-INF/jdbc.properties</value>
- <!-- <value>WEB-INF/sms.properties</value> -->
- </list>
- </property>
- </bean>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>${jdbc.driverClass}</value>
- </property>
- <!--<property name="defaultAutoCommit" value="false"/>-->
- <property name="url">
- <value>jdbc:mysql://192.168.14.239:3306/test?useUnicode=true&characterEncoding=utf-8</value>
- </property>
- <property name="username">
- <value>${jdbc.username}</value>
- </property>
- <property name="password">
- <value>${jdbc.password}</value>
- </property>
- <property name="maxActive">
- <value>20</value>
- </property>
- <property name="maxIdle">
- <value>60</value>
- </property>
- <property name="maxWait">
- <value>20000</value>
- <!-- 0 -->
- </property>
- <property name="removeAbandoned">
- <value>true</value>
- </property>
- <property name="removeAbandonedTimeout">
- <value>6000000</value>
- <!-- 180 -->
- </property>
- <!-- add -->
- <property name="validationQuery" value="SELECT 1"></property>
- <property name="testWhileIdle" value="true"></property>
- <property name="testOnBorrow" value="true"></property>
- <property name="timeBetweenEvictionRunsMillis" value="3600000"></property>
- <property name="numTestsPerEvictionRun" value="50"></property>
- <property name="minEvictableIdleTimeMillis" value="120000"></property>
- <!-- add -->
- </bean>
- <!-- SqlSessionFactory -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- </bean>
- <bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
- <property name="corePoolSize" value="1"/>
- <property name="maxPoolSize" value="10"/>
- <property name="keepAliveSeconds" value="300"/>
- <property name="queueCapacity" value="50"/>
- <property name="WaitForTasksToCompleteOnShutdown" value="true"/>
- </bean>
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
- <!--<!– 自动扫描service实现 –>-->
- <!--<context:component-scan base-package="com.royao">-->
- <!--<context:include-filter type="regex"-->
- <!--expression="com.royao.services.*" />-->
- <!--</context:component-scan>-->
- <aop:config proxy-target-class="true">
- <aop:pointcut id="serviceOperation" expression="execution(* cc.royao.mana.auth.service.*.impl.*ServiceImpl.*(..))"/>
- <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/>
- </aop:config>
- <!-- 配置事务通知 -->
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="*" rollback-for="Exception"/>
- </tx:attributes>
- </tx:advice>
- <tx:advice id="transactionManagerAdivice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="*insert*" propagation="REQUIRED"/>
- <tx:method name="*add*" propagation="REQUIRED"/>
- <tx:method name="*update*" propagation="REQUIRED"/>
- <tx:method name="*Update*" propagation="REQUIRED"/>
- <tx:method name="*del*" propagation="REQUIRED"/>
- <tx:method name="*create*" propagation="REQUIRED"/>
- <tx:method name="doApproved" propagation="REQUIRED"/>
- <tx:method name="batchDelFm" propagation="REQUIRED"/>
- <tx:method name="editTemplate" propagation="REQUIRED"/>
- <tx:method name="dummyDelete" propagation="REQUIRED"/>
- <tx:method name="batchDelUser" propagation="REQUIRED"/>
- <!--<tx:method name="*" propagation="REQUIRED"/>-->
- </tx:attributes>
- </tx:advice>
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage">
- <value>cc.royao.mana.auth.mapper.*</value>
- </property>
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
- </bean>
- <import resource="application-servlet.xml"/>
- <!-- 重点在这里 ,我把整个xml文件内容复制出来,怕你们不知道插入在哪里-->
- <import resource="spring-plan.xml"/>
- </beans>
这样就ok了,有不懂的地方可以加作者的QQ1983127490
使用spring整合Quartz实现—定时器的更多相关文章
- Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)
Spring整合Quartz定时任务 在集群.分布式系统中的应用(Mysql数据库环境) 转载:http://www.cnblogs.com/jiafuwei/p/6145280.html 单个Q ...
- Spring整合Quartz (cronTrigger和simpleTrigger实现方法)
Spring整合Quartz (cronTrigger和simpleTrigger实现方法) 之前有记录过一次springboot整合Quartz的文章,由于偶尔一次自己使用spring需要整合Qua ...
- 使用Spring整合Quartz轻松完成定时任务
一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...
- spring整合quartz并持久化
spring整合quartz有两种方式: 一.常见是使用配置文件,将定时任务保存到内存中 简单示例: <!-- 短信催还提醒任务调度 --> <bean id="overd ...
- Spring整合Quartz定时任务执行2次,Spring定时任务执行2次
Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...
- spring整合quartz时间任务调度框架
spring整合quartz框架 1.创建maven工程 2.导入jar包(pom.xml) <dependencies> <dependency> <groupId&g ...
- Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入
Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入 Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入 >> ...
- Spring整合Quartz分布式调度
前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...
- Spring整合Quartz分布式调度(山东数漫江湖)
前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...
随机推荐
- 在centos7上搭建博客之小白教程~
原理 http使用方法一编译安装,php模块打入方式实现. 软件版本 在本次实验中,我们需要用到的软件版本如下: apr-1.6.2 apr-util-1.6.0 httpd-2.4.28 maria ...
- Test随笔
测试一级主题 测试二级主题 测试内容,修改会不会出现历史记录
- week6:Diagnosing Bias vs. Variance难点记录
1.Bias vs. Variance是什么概念? 图形上的理解:https://www.zhihu.com/question/27068705 http://blog.csdn.n ...
- 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 ...
- java学习笔记-JavaWeb篇三
63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...
- 为Python加入默认模块搜索路径
为Python加入默认模块搜索路径 方法一:函数加入 1) import sys 2) 查看sys.path 3) 加入sys.path.append("c:\\") 方法二:改动 ...
- UITableViewCell的父视图
最近版本测试阶段,发现一个奇怪的问题,以前在A测试机上出现的崩溃bug,解决后今天在B测试机上又出现了,在B上解决完之后,返回到设备A上发现又不行了.最后调试发现是测试设备系统版本不同导致的,A设备是 ...
- SQL基础语法的单表操作 select|insert|update|delete(增删改查) 简单使用
以下案列以此表举例 1.select(查询) select简单的查询分为两种 注:字段也就是表结构中的列的名称 第一种: select 字段名 from 表名 此种查询只列出你所需要查询的字段, ...
- 能够让你装逼的10个Python小技巧
列表推导式 你有一个list: bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这 ...
- jQuery带缩略图轮播效果图片切换带缩略图
以上为效果图 HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...