`
sjuhui
  • 浏览: 46726 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring定时操作的例子

阅读更多

 

 

在spring中你有时候需要在每天或者指定的一个时候进行一系列的操作。这个时候我们的spring为我们提供了一个很好的包来解决这个问题,你这是需要写一个Class文件,在文件中定义你要执行操作的函数你就可以通过配置来达到定时操作了。
1)需要的jar包为:quartz.jar包,将他加到你工程的classpath中去。
2)在applicationContext中配置你的定时发送操作。
(1) 下边定义的这个testQuarz就是我们要将我们的定时操作函数TestDoIt()所要放置的地方。就是说TestDoIt()这个方法是 TestQuarz这个类中的一个函数。这里声明一下这个bean。就是将这个bean注入到我们的容器中。这个时候我们可以在这个bean中引用容器中 其他的bean进行数据库操作。是不是很酷?

代码:
<bean id="testQuarz" class="cn.demo.test.util.TestQuarz"/>

(2)下边的这个bean是我们定义要使用哪个bean中的哪个方法作为我们要定时执行的任务。这里定义了我们要使用testQuarz这个bean中的TestDoIt()这个函数作为我们要定时执行的任务。

代码:
 <bean id="quartzDetail"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject">
   <ref bean="testQuarz"/>
  </property>
  <property name="targetMethod">
   <value>TestDoIt</value>
  </property>
 </bean>

(3)这是一个触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是quartzDetail,并且我们还定义了触发的时间。

代码:
 <bean id="quartzTrigger"
  class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail">
   <ref bean="quartzDetail"/>
  </property>
  <property name="cronExpression">



<!-- 每天凌晨1点7分18妙运行定时任务,时间的设置请看下边
更多的配置例子请查看:http://wiki.opensymphony.com/display/QRTZ1/CronTriggers+Tutorial
-->

代码:
   <value>18 7 1 * * ?</value>
   
  </property>
 </bean>


<!-- 一定要把autowire设置为no,否则它能感知出dataSourse并设置里面的dataSourse的属性-->
(4) 下边的是我们管理这些触发器的总设置,他管理我们我们的触发器列表。据说他的内部是自己建立了自己的数据库来存放自己的临时表,因为我们在我们的配置文件 中自动的配置了dataSource这个bean,我们的每一个bean都会在使用数据库的时候找到他,但是如果我们下边的这个管理bean知道的话就会 把他当成自己的临时数据库,然后就会出错。所以我们需要将下边的数据库感知设置成否定。这样就不影响他内部实现了。我们可以在下边的bean的list中 放置多个触发器。

代码:
 <bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
      <list>
        <ref local="quartzTrigger"/>
      </list>
     </property>
   </bean>


到此,我们的定时发送设置就完成了,具体的还要看看spring的refence比较好,那些比较细的细节东东我没有涉及到。

 

 

 

 

由于项目需要学习了一下定时 触发的功能。

Spring 提供了支持时序调度,对于Quartz Scheduler和Timer两者存在一个方便的类允许你调用目标对象(类似于通常的MethodInvokingFactoryBeans)上的某个方法。

可以灵活定时 调用,bean中的方法。
主要用到 org.spring framework.scheduling.quartz.SimpleTriggerBean 类
<bean id="topDailyTrigger" class="org.spring framework.scheduling.quartz.SimpleTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="jobDetail" />
<!-- 启动后5秒开始 计时 -->
<property name="startDelay" value="5000" />
<!-- repeat every 一个小时 seconds -->
<property name="repeatInterval" value="3600000" />
</bean>

一个任务 指定执行的bean 和对应的方法
<bean id="jobDetail" class="org.spring framework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="DailyEntryManager" />
<property name="targetMethod" value="excut" />
<property name="concurrent" value="false" />
</bean>
这个是要执行的bean 声明
<bean id="DailyEntryManager" class="net.bokee.dailymodule.service.DailyEntryManagerImpl">
</bean>

最后不要忘记这个配置
<bean class="org.spring framework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="topDailyTrigger" />
</list>
</property>
</bean>

说明:org.spring framework.scheduling.quartz.SchedulerFactoryBean这是一个spring 的工厂bean,在他的triggers属性列表中加入刚才定义的触发器,这里可以定义多个触发器(list嘛)。

下面学习一下 定时 表达式



 

 

 

 

 

 

 

  定时批处理作业是J2EE企业应用里很重要的一环,用来在晚间进行财务挂账,数据转存,新闻联播等等操作。

    而在Spring里,已经很好的集成了Quartz,简单到像配cron一样,在xml文件里面配一下时间就可以自动执行,不需要写一行代码。Spring对Quartz大刀阔斧的简化堪称范例,Quartz项目组也许可以学习一下。

    <bean id="methodInvokingJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject"><ref bean="financeDAO"/></property>
        <property name="targetMethod"><value>confirmOrder</value></property>
    </bean>
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="methodInvokingJobDetail"/>
        </property>
        <property name="cronExpression">
            <value>0 0 6,12,20 * * ?</value>
        </property>
    </bean>
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list><ref local="cronTrigger"/></list>
        </property>
    </bean>

上面这段配置文件规定了在早上6点和晚上8点执行financeDAO对象的confirmOrder()方法.


附:cronExpression配置说明

字段   允许值   允许的特殊字符
  0-59   , - * /
  0-59   , - * /
小时   0-23   , - * /
日期   1-31   , - * ? / L W C
月份   1-12 或者 JAN-DEC   , - * /
星期   1-7 或者 SUN-SAT   , - * ? / L C #
年(可选)   留空, 1970-2099   , - * /
分享到:
评论
1 楼 felix2008 2008-05-30  
原本以为要用程序来实现定时
不过是数据库里的数据转移,也是个定时
想用spring
但是后来发现oracle的job可以做到了
而且简单多了,spring太麻烦!
还是up

相关推荐

    Quartz+Spring定时触发器例子

    在本示例中,“Quartz+Spring定时触发器例子”是一个完整的项目,包含了所有必要的jar包,这意味着你可以直接运行它来学习和理解Quartz与Spring的集成。这个项目应该包含以下组件: 1. **配置文件**:可能包含一个...

    spring+quartz定时小例子

    在 "spring+quartz定时小例子" 中,我们主要关注的是如何将这两个框架结合使用,创建一个可以执行定时任务的应用。这个例子包含了相关的框架包和文档,帮助开发者理解并实践这一整合过程。 1. **Spring 配置**: ...

    spring quartz简单例子

    这个“spring quartz简单例子”旨在帮助初学者快速理解如何在Spring环境中配置和使用Quartz进行定时任务调度。通过实际运行和观察,你可以深入理解Spring与Quartz的集成原理,为更复杂的定时任务场景打下基础。

    Spring定时任务@Scheduled例子

    在Spring框架中,定时任务是实现自动化...以上就是关于Spring定时任务`@Scheduled`的例子,包括其工作原理、配置以及在实际项目中的应用。理解并熟练运用这些知识,能够帮助我们构建更加高效、自动化的Spring应用程序。

    spring之quartz例子

    spring之quartz例子,与oracle整合,不过spring中的MethodInvokingJobDetailFactoryBean方法在存数据库时序列化有bug,在本例子中,使用了修复后的MethodInvokingJobDetailFactoryBean方法,避免了因序列化而报错。

    Spring定时任务的简单例子

    Spring定时任务支持更多的功能,比如任务执行的并发控制、任务执行的监听器、以及使用Quartz等第三方调度库进行更复杂的任务调度。 总结,Spring定时任务为开发者提供了方便的API和注解,使我们可以轻松地在Java...

    spring定时任务简单例子

    一个很简单的spring定时任务的例子,一看就会。。。。

    spring xml 定时任务

    在Spring框架中,XML配置是传统且广泛使用的方式来设置应用的组件和行为,包括实现定时任务。定时任务在软件开发中扮演着重要角色,它允许应用程序在预设的时间执行特定的任务,例如数据清理、日志归档或者发送通知...

    spring定时任务

    在Spring框架中,定时任务是实现自动化操作的重要功能,它允许开发者在特定时间点或按照预设周期执行任务。Spring提供了两种主要的方式来配置定时任务:基于XML和基于Java-config的配置方式。 首先,我们来详细了解...

    Spring2.5+Quartz定时任务简单例子web工程

    在"Spring2.5+Quartz定时任务简单例子web工程"中,我们可以看到这两个框架的结合使用,主要目标是实现基于 Web 应用的定时任务管理。以下将详细介绍这个项目中可能涉及的知识点: 1. **Spring 2.5**: - **依赖...

    spring定时非常详细,有例子,超具体,需要的下载

    本资源包含了一份关于Spring定时任务的详细教程,具有实例和具体操作步骤,适合需要深入了解和使用Spring定时功能的开发者。 Spring定时任务主要依赖于`Spring Task`模块,它提供了`@Scheduled`注解和`Task...

    spring执行定时任务的规则

    ### Spring执行定时任务的规则详解 在Spring框架中,实现定时任务主要依赖于Spring的集成模块Spring Integration或通过集成第三方库如Quartz来完成。本文将重点介绍如何利用Spring框架结合表达式规则来配置和执行...

    spring的自带定时任务

    Spring定时任务基础 Spring的定时任务功能是通过`org.springframework.scheduling`包中的类来实现的,主要涉及`TaskScheduler`和`TaskExecutor`接口。`TaskScheduler`用于定时任务的调度,而`TaskExecutor`则处理...

    Spring3.2.6定时任务+线程池.docx

    除了线程池的配置外,还需要配置定时任务来定期执行指定的操作。以下是定时任务的具体配置: ```xml &lt;bean id="springScheduleExecutorTask" class="org.springframework.scheduling.concurrent....

    spring-cloud 例子

    Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的简单方法。...

    spring3+quartz2 定时调度例子,能正常运行的程序

    spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序

    spring boot入门例子

    12. **数据访问(Data Access)**:对于数据库操作,Spring Boot支持JPA和MyBatis等持久层框架,可以轻松地连接各种数据库,如MySQL、PostgreSQL等。 13. **安全(Security)**:Spring Security 提供了全面的安全...

    spring定时任务配置详解.doc

    总结起来,这个例子展示了如何在Spring中配置Quartz定时任务,包括定义任务细节、触发器以及调度器。通过这样的配置,你可以创建复杂的定时任务调度,满足不同业务需求。需要注意的是,实际项目中,为了更好地管理...

    Spring配置定时任务

    在Spring框架中,定时任务是通过Spring的Task模块来实现的,这允许我们在应用程序中创建和管理定时任务,而无需依赖外部的调度器如Quartz或Cron。本例主要探讨如何在Spring中配置和执行定时任务。 首先,我们要引入...

    quartz 在spring中使用服务定时执行的例子

    本文将详细介绍如何在Spring项目中配置并使用Quartz服务来定时执行任务。 首先,集成Quartz到Spring项目中,我们需要在项目的`pom.xml`或`build.gradle`文件中添加Quartz和Spring相关的依赖。Quartz的核心库通常...

Global site tag (gtag.js) - Google Analytics