spring timer 基础应用

    技术2022-05-20  47

    调度事物:  从java 1.3开始,java sdk就通过java.until.Timer类提供基本的调度功能。  这个类允许你调度一个任务(通过java.until.TimerTask子类定义)按任意周期运行。  Spring通过TimerFactoryBean向应用程序上下文提供对JavaTimer的支持。  1、使用Java Timer调度任务  创建类TellLoveMeTask extends TimerTask 

    view plain copy to clipboard print ? package cn.partner4java.timer;      import java.util.TimerTask;      /**  * 每天告诉你爱我  * @author Administrator  *  */   public class TellLoveMeTask extends TimerTask {          public void run() {           System.out.println("小媳妇我爱你");       }      }   配置spring文件:beans-timer.xml view plain copy to clipboard print ? <!-- 在spring中声明我的定时器 当然,我们就可以按照通用的方式,给他注入一些bean -->        <bean id="tellLoveMeTask" class="cn.partner4java.timer.TellLoveMeTask"></bean>        <!-- 定义一个调度器,把我们定时器告诉他,告诉他调度时间 -->        <bean id="scheduledTimerTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">               <property name="timerTask" ref="tellLoveMeTask"></property>               <property name="period" value="20000"></property>               <!-- 也可以延迟定时器的启动 -->               <property name="delay" value="5000"></property>        </bean>        <!-- 定义一个启动器 -->        <bean  class="org.springframework.scheduling.timer.TimerFactoryBean">               <property name="scheduledTimerTasks">                   <list>                       <ref bean="scheduledTimerTask"/>                   </list>               </property>        </bean>   交到web.xml,好启动spring view plain copy to clipboard print ?     <context-param>     <param-name>contextConfigLocation</param-name>     <param-value>classpath:beans-timer.xml</param-value>   </context-param>      <!-- 对Spring容器进行实例化 -->   <listener>     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   </listener>   2、使用Quartz调度器   那么我们可以反复的说我爱你了,但是我们是否可以每天在确定的时间说晚安呢?  额外加入包 quartz-all-1.6.0.jar commons-collections.jar jta.jar  编写类GoodNightDarling extends QuartzJobBean  view plain copy to clipboard print ? package cn.partner4java.timer;      import org.quartz.JobExecutionContext;   import org.quartz.JobExecutionException;   import org.springframework.scheduling.quartz.QuartzJobBean;         /**  * 晚安亲爱的  * @author Administrator  *  */   public class GoodNightDarling extends QuartzJobBean {             protected void executeInternal(JobExecutionContext arg0)               throws JobExecutionException {           System.out.println("晚安亲爱的");       }         }   配置配置文件 view plain copy to clipboard print ? <!-- 定义我们每天的晚安 -->      <bean id="goodNightDarlingJob" class="org.springframework.scheduling.quartz.JobDetailBean">       <property name="jobClass" value="cn.partner4java.timer.GoodNightDarling"></property>       <!-- 注入bean -->       <!--         <property name="jobDataAsMap">           <map>               <entry key="rantService" value="rantService"></entry>           </map>       </property>       -->      </bean>      <!-- 这个和我们上面功能上没有上面区别 -->      <bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">           <property name="jobDetail" ref="goodNightDarlingJob"></property>           <!-- 延迟时间 -->           <property name="startDelay" value="200000"></property>           <!-- 重复时间 -->           <property name="repeatInterval" value="30000"></property>      </bean>      <!-- 调度一个cron,这个调度器就有所区别了,能够指定每次调动的时间 -->      <bean id="cronGoodNightTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">           <property name="jobDetail" ref="goodNightDarlingJob"></property>           <property name="cronExpression" value="10 * * * * ?"></property>      </bean>      <!--       cornExpression格式:      1、秒 0-59      2、分钟 0-59      3、小时 0-23      4、月份中的日期 1-31      5、月份 1-12 或者 JAN-DEC      6、星期中的日期 1-7 或者SUN-SAT      7、年份 1970-2099      例子:      0 0 10,14,16 * * ? 每天上午十点,下午两点,下午四点      0 0,15,30,45 * 1-10 * ? 每月前十天每个十五分钟      30 0 0 1 1 ? 2012 在201211日午夜过三十秒      0 0 8-5 ? * MON-FRI 每个工作日的工作时间       -->      <!-- 启动器 -->      <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">           <property name="triggers">               <list>                   <ref bean="cronGoodNightTrigger"/>               </list>           </property>      </bean>         3、不单独书写定时器   view plain copy to clipboard print ? package cn.partner4java.timer;         /**  * 不用提醒,就应该去做饭  * @author Administrator  *  */   public class PrepareFood {       public void hongShaoQieZi(){           System.out.println("做了红烧茄子");       }   }   view plain copy to clipboard print ? <!-- 不单独书写定时器 -->     <bean id="invokingPrepareFoodTimerTask" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">           <property name="targetObject" ref="prepareFood"></property>           <property name="targetMethod" value="hongShaoQieZi"></property>     </bean>     <bean id="invokingPrepareFoodJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">           <property name="targetObject" ref="prepareFood"></property>           <property name="targetMethod" value="hongShaoQieZi"></property>     </bean>     


    最新回复(0)