`
高级java工程师
  • 浏览: 409400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

执行定时业务one

阅读更多
spring执行定时任务

定义一个任务是很简单的实现TimerTask的run方法就可以了.
如下:SayHelloTask.java
 1package test.timerTask;
 2
 3import java.util.TimerTask;
 4
 5public class Task extends TimerTask {
 6
 7  @Override
 8  public void run() {
 9    // TODO Auto-generated method stub
10    System.out.println("测试TimerTask : Hello !!");
11  }
12
13}


 1package test.springTimer;
 2
 3import java.util.TimerTask;
 4
 5public class Task2 extends TimerTask{
 6    public void run(){
 7        
 8        System.out.println("task2 is running");
 9    }
10
11    
12}
13

然后是配置文件: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="sayHelloTask" class="test.springTimer.Task"></bean>
<bean id="HelloTask" class="test.springTimer.Task2"></bean>

<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="sayHelloTask"/>
</property>
<!-- 任务执行周期 2m 关于一些任务的参数请参考JDK doc文档和Spring相关文档-->
<property name="period">
<value>2000</value>
</property>
<!-- 延时1m 执行任务 -->
<property name="delay">
<value>1000</value>
</property>
</bean>


<bean id="scheduledTask2" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="HelloTask"/>
</property>
<!-- 任务执行周期 2m 关于一些任务的参数请参考JDK doc文档和Spring相关文档-->
<property name="period">
<value>2000</value>
</property>
<!-- 延时1m 执行任务 -->
<property name="delay">
<value>1000</value>
</property>
</bean>


<!-- 启动定时器 -->
<bean id="timerBean" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask"/>
<ref bean="scheduledTask2"/>
</list>
</property>
</bean>
</beans>



测试类如下:TestApp.java


package test.timerTask;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ApplicationContext context = new ClassPathXmlApplicationContext("test/timerTask/javaTimer.xml");
 //   ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml");
  }
// 只要加载配置文件就可以了,
} 

运行结果:
task2 is running
task2 is running
haha,task is running
haha,task is running
task2 is running
使用Java中的定时器比较简单,其提供的任务也比较简单, 下面来看看使用quartz来执行一个复杂的任务. 


 1package test.timerTask;
 2
 3import org.quartz.JobExecutionContext;
 4import org.quartz.JobExecutionException;
 5import org.springframework.scheduling.quartz.QuartzJobBean;
 6
 7public class SayHelloTaskUsingQuartz extends QuartzJobBean {
 8
 9  @Override
10  protected void executeInternal(JobExecutionContext context)
11      throws JobExecutionException {
12    // TODO Auto-generated method stub
13    System.out.println("使用Quartz 认为调度: Hello!!");
14  }
15
16} 
17


<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>test.timerTask.SayHelloTaskUsingQuartz</value>
</property>
</bean> 

<!-- 关键在如下两个触发器的配置 --> 

<!-- 类似于Java的简单触发器 --> 

<bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="sayHelloJob"/>
</property>
<property name="startDelay">
<value>1000</value>
</property>
<property name="repeatInterval">
<value>3000</value>
</property>
</bean> 
    
<!-- 复杂触发器 --> 

<bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="sayHelloJob"/>
</property>
<property name="cronExpression"> 
  
<!-- 关键在配置此表达式 --> 

<value>0 49 15 * *  </value>
</property>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<ref bean="helloCronTrigger"/>
</property>
</bean>

   </beans>





分享到:
评论

相关推荐

    spring boot 定时任务源码

    Spring Boot通过集成Spring Framework的Task Execution和Scheduling模块,提供了便捷的方式来管理和执行定时任务。下面将详细介绍Spring Boot整合定时任务的相关知识点。 1. **定时任务API介绍** - `@Scheduled`: ...

    Python-One一个信息拉取定时以邮件形式发送

    3. **定时任务**:使用Python的schedule库或者其他类似库,设置定时器,让程序在特定时间运行,执行信息拉取和邮件发送。 4. **邮件发送**:Python的smtplib和email库可以帮助我们构建邮件内容并发送至指定的收件人...

    在Linux系统中简单地实现定时备份的方法.docx

    例如,定时备份数据可以帮助防止数据丢失,并确保业务连续性。本文档将详细介绍如何通过编写简单的脚本来实现定时备份功能,并通过Systemd服务和定时器来调度这些脚本。 #### 二、基本概念 - **Systemd**:它是现代...

    JQuery 定时器 (Jquery Timer 插件) 下载及示例(转).pdf

    JQuery Timers 是一个jQuery插件,用于在Web应用程序中实现定时执行的函数。这个插件提供了三种主要的函数:`everyTime`、`oneTime` 和 `stopTime`,来帮助开发者设置定时任务。 1. **everyTime**: 这个函数用于...

    爱数企业级备份容灾方案兼容性列表.pdf

    定时备份是指按预定计划执行的备份操作,可以是全备份也可以是增量备份或差异备份。本文档中的定时备份部分列出了所有定时备份类型任务。 5. 实时备份 实时备份指数据在被创建或修改的同时进行备份,以确保数据的...

    python写的小工具,监控某程序状态,异常退出将会自动启动该程序

    `cq_one.py`可能是一个具体的监控实例,`untitled.py`可能是未命名的测试脚本或辅助工具,而`cq_zcb.py`可能涉及特定的功能,如资金清算等业务逻辑。不过,具体的功能实现需要查看源代码才能确定。

    智能制造与MES应用解决方案.pptx

    MES(Manufacturing Execution System,制造执行系统)是智能制造的核心组成部分,它在生产过程中起到承上启下的作用,连接企业的计划层和控制层,实现生产过程的精细化管理和优化。 制造需求的演变推动了MES的发展...

    spring.jar

    9. **任务调度**:Spring的`TaskExecutor`和`TaskScheduler`接口允许开发者定义和执行定时任务,提供了灵活的任务调度能力。 10. **安全**:Spring Security是Spring的子项目,提供了全面的身份验证、授权和访问...

    备份数据软件syncoveryproen80045.zip

    在现代社会,数据已经成为企业和个人的核心资产,无论是业务资料、个人照片还是重要文档,一旦丢失可能带来不可估量的损失。因此,定期备份数据是保障信息安全的重要手段。 Syncovery Pro 提供了多种备份模式,包括...

    广告数据分析公司eyeblaster的PPT案例.pptx

    2. Eyeblaster Analytics:这是一个关键组件,旨在将数据转化为可执行的洞察。它关注与实际业务目标相关的指标,确保数据的可靠性和实用性。 3. Campaign Monitor:这是一个工具,用于监控广告活动的表现,帮助用户...

    allwaysync-v17.1.3

    4. **计划任务**:用户可以设置定时同步任务,确保在特定时间自动执行备份或同步,无需人工干预。 5. **安全加密**:AllwaySync支持AES-256加密,确保在传输和存储过程中的数据安全,防止未经授权的访问。 6. **...

    备份软件GoodSync

    每个任务可以包含多个同步路径,并可以设置定时同步计划,例如每天、每周或按需执行。这样,您无需手动操作,就可以在指定的时间自动完成文件同步。 安全性是GoodSync的另一大亮点。软件提供了强大的加密功能,您...

    分布式消息引擎Apache RocketMQ最佳实践

    定时消息则是在特定时间点触发消费,例如,可以在每天的固定时间执行某些操作。 在实际应用中,Apache RocketMQ还支持多种消费策略,如集群消费(多Consumer并行消费,保证每个消息只被消费一次)、广播消费(每个...

    Access数据表恢复

    然而,人为操作失误或系统故障可能导致数据表的意外删除,这无疑会给业务带来严重影响。本文将详细探讨“Access数据表恢复”这一主题,帮助用户理解如何在类似情况下找回丢失的数据。 首先,我们要明确一个基本概念...

    Redis面试专题及答案(下).pdf

    - **锁释放**:客户端处理完业务逻辑后删除自己的节点,释放锁。 #### 区别 - **性能**:ZooKeeper相比Redis实现的分布式锁性能较差,开销更大。 - **实现复杂度**:ZooKeeper实现起来相对简单,但需要依赖额外的...

    xxl-job更换数据库为人大金仓

    XXL-JOB是一款轻量级分布式任务调度平台,它提供了基于Java的API接口,使得开发者可以方便地在自己的系统中实现任务的定时与调度。在默认情况下,XXL-JOB通常使用MySQL作为其后台数据库。然而,根据您的需求,您打算...

    Laravel开发-pipl-laravel .zip

    - 使用`php artisan schedule:run`命令,可以定时执行任务,例如定期清理缓存或发送邮件。 12. **队列(Queues)** - Laravel 队列允许异步处理耗时任务,提高应用程序的响应速度。 13. **邮件服务** - Laravel...

    国外黑色曲线科技幻灯片模板.ppt

    4. **Reporting Tools**:幻灯片提到了一系列报告工具,如One-click Reporting(一键报告)、Report Generator(报告生成器)和Custom Report Builder(自定义报告构建器),这些工具简化了报告生成的过程,并允许...

    多媒体定时器参考手册

    回调函数`OneShotTimer`会在定时器事件触发后被调用,其中`TimerRoutine`是开发者定义的函数,用于执行具体业务逻辑。 ##### 取消定时器事件 在应用程序不再需要某个定时器事件时,需要调用`timeKillEvent`函数来...

    Biee_入门讲座

    - **创建iBot**:创建自动任务,定时执行特定操作,如发送邮件报告。 - **查看Alerts**:查看系统警报和通知,及时响应异常情况。 - **发送Mail**:配置邮件服务,自动发送报表和其他重要信息。 #### 七、其他功能...

Global site tag (gtag.js) - Google Analytics