Spring+Quartz任务调度(一)
来源:互联网 发布:网络贷款app 编辑:程序博客网 时间:2024/04/30 15:46
Spring+Quartz任务调度
package com.zx.timer.core.tasks;
/**
*
* @ClassName: QuartzJobTask
* @Description: TODO(定时任务类)
* @author lhq
* @date 2015年12月29日 下午4:03:50
*/
public class QuartzJobTask{
public void execute() {
<?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.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 增加一个线程池;线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="50" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<!-- 要调用的工作类 -->
<bean id="quartzJobTask" class="com.zx.timer.core.tasks.QuartzJobTask">
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="quartzJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJobTask" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false" />
</bean>
<!-- 定义触发时间 -->
<bean id="quartzJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="quartzJob" />
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="quartzJobTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
有时候,我们需要在调度类方法前后分别执行一些不同的业务逻辑
public class ParentTask {
/**
* 负责获取执行任务信息前面执行操作
*/
public boolean beforeExecute() {
*/
public void afterExecute(boolean _self) {
}
/**
* 执行编号指定的任务
*
*/
public void execute() {
}
public void executeTask() {
boolean _self = beforeExecute();
try {
if (_self) {
execute();
}
} finally {
afterExecute(_self);
}
}
}
(2)调度类
package com.zx.timer.core.tasks;
/**
*
* @ClassName: QuartzJobTask
* @Description: TODO(定时任务类)
* @author lhq
* @date 2015年12月29日 下午4:03:50
*/
public class QuartzJobTask extends ParentTask{
public void execute() {
(3)spring配置文件
<?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.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 增加一个线程池;线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="50" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<bean id="parentTask " class="com.zx.timer.core.ParentTask ">
<!-- 要调用的工作类 -->
<bean id="quartzJobTask" class="com.zx.timer.core.tasks.QuartzJobTask" parent="baseTask">
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="quartzJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJobTask" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="executeTask" />
<property name="concurrent" value="false" />
</bean>
<!-- 定义触发时间 -->
<bean id="quartzJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="quartzJob" />
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="quartzJobTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
</beans>
一.第一种配置
1.基础
(1)//调度类package com.zx.timer.core.tasks;
/**
*
* @ClassName: QuartzJobTask
* @Description: TODO(定时任务类)
* @author lhq
* @date 2015年12月29日 下午4:03:50
*/
public class QuartzJobTask{
public void execute() {
}
}
(2)spring配置文件<?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.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 增加一个线程池;线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="50" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<!-- 要调用的工作类 -->
<bean id="quartzJobTask" class="com.zx.timer.core.tasks.QuartzJobTask">
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="quartzJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJobTask" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false" />
</bean>
<!-- 定义触发时间 -->
<bean id="quartzJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="quartzJob" />
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="quartzJobTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
</beans>
有时候,我们需要在调度类方法前后分别执行一些不同的业务逻辑
我们可以创建一个调度类的父类
(1)调度类父类
package com.zx.timer.core;
//执行任务预处理public class ParentTask {
/**
* 负责获取执行任务信息前面执行操作
*/
public boolean beforeExecute() {
return false;
}
/**
* 负责执行任务后工作*/
public void afterExecute(boolean _self) {
}
/**
* 执行编号指定的任务
*
*/
public void execute() {
}
public void executeTask() {
boolean _self = beforeExecute();
try {
if (_self) {
execute();
}
} finally {
afterExecute(_self);
}
}
}
(2)调度类
package com.zx.timer.core.tasks;
/**
*
* @ClassName: QuartzJobTask
* @Description: TODO(定时任务类)
* @author lhq
* @date 2015年12月29日 下午4:03:50
*/
public class QuartzJobTask extends ParentTask{
public void execute() {
}
}(3)spring配置文件
<?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.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 增加一个线程池;线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="50" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<bean id="parentTask " class="com.zx.timer.core.ParentTask ">
<!-- 要调用的工作类 -->
<bean id="quartzJobTask" class="com.zx.timer.core.tasks.QuartzJobTask" parent="baseTask">
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="quartzJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJobTask" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="executeTask" />
<property name="concurrent" value="false" />
</bean>
<!-- 定义触发时间 -->
<bean id="quartzJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="quartzJob" />
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="quartzJobTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
</beans>
0 0
- Spring+Quartz任务调度(一)
- 任务调度quartz(一)quartz在spring中的集成
- Quartz+Spring 分布式定时任务调度(一)- 环境搭建
- spring quartz任务调度
- Spring Quartz 任务调度
- Spring Quartz 任务调度
- spring quartz 任务调度
- spring quartz任务调度
- spring Quartz任务调度
- Spring 的quartz定时器(任务调度)
- Spring中Quartz 定时器(任务调度)
- spring 任务调度(quartz)使用方法
- Quartz任务调度快速入门(一)
- 任务调度Quartz初探Demo(一)
- 动态Quartz任务调度(Spring结合Quartz)
- Spring Quartz任务调度示例
- Spring配置Quartz任务调度
- Spring任务调度,Quartz Scheduler
- LDAP《三》
- webview支持html5本地缓存
- IOS开发UIScrollView控件详解
- 支付宝对接几处配置问题 rsa签名
- 使用Jersey框架构建Restful web服务(服务端+客户端)
- Spring+Quartz任务调度(一)
- C#CheckedListBox 控件
- SDN发展动因
- MOS管之开关控制与信号控制
- GPRS 数据传输
- VC++编写ActiveX控件
- Android API 中文(13) —— ToggleButton
- Android上gdb+gdbserver调试初体验
- 警告: No mapping found for HTTP request with URI的解决方案