Sun River
          Topics about Java SE, Servlet/JSP, JDBC, MultiThread, UML, Design Pattern, CSS, JavaScript, Maven, JBoss, Tomcat, ...
          posts - 78,comments - 0,trackbacks - 0
           

          spring與自動調度任務()

          面是自己自動調度的一些學習。
          這里只采用jdk自帶的timer進行的,準備在下篇文章中用Quartz調度器。
          首先建立你自己要運行的類。

          package com.duduli.li;

          public class Display {

              
          public void disp(){
                  System.out.println("
          自動控制測試");
              }
          }

          一個簡單的java bean,其中在這里你可以替換自己的任務。
          然后就是編寫調度程序,這里要繼承jdk中的TimerTask類,復寫他的run方法。

          package com.duduli.li;

          import java.util.TimerTask;

          public class AutoRan extends TimerTask {
              
          //set方法是springDI
              private Display display;
              
              
          public void setDisplay(Display display) {
                  
          this.display = display;
              }
              @Override
              
          public void run() {
                  display.disp();
              }
          }

          然后就是重要的一步,編寫applicationsContext.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"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
              
              
          <bean id="display"
                  class
          ="com.duduli.li.Display">
              
          </bean>
              
          <bean id="atuoRun"
                  class
          ="com.duduli.li.AutoRan">
                  
          <property name="display" ref="display"></property>
              
          </bean>
              
              
          <bean id="aR"
              class
          ="org.springframework.scheduling.timer.ScheduledTimerTask">
                  
          <property name="timerTask" ref="atuoRun"></property>
          <!--
          period
          多長時間運行一次,delay表示允許你當任務第一次運行前應該等待多久
          -->

                  
          <property name="period" value="5000"></property>
                  
          <property name="delay" value="2000"></property>    
              
          </bean>
              
              
          <bean id="test"
              class
          ="org.springframework.scheduling.timer.TimerFactoryBean">
                  
          <property name="scheduledTimerTasks">
                      
          <list>
          <!--
          這里使用list,可以調度多個bean
          -->

                          
          <ref bean="aR"/>
                      
          </list>
                  
          </property>
              
          </bean>
          </beans>


          再來就是客戶端調度了。

          package com.duduli.li;

          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          public class Client {

              
          public static void main(String[] args) {
                  BeanFactory factory = 
          new ClassPathXmlApplicationContext("applicationContext.xml");
                  factory.getBean("test");
              }
          }

          spring與自動調度任務()

          使用quartzspring自動調度。
          具體實現bean

          package com.duduli.li.quartz;

          import java.util.Date;

          public class Display {

              @SuppressWarnings("deprecation")
              
          public void disp(){
                  System.out.println(
          new Date().getSeconds());
                  System.out.println("
          自動控制測試");
              }
          }

          繼承quartzjobbean類:這個類和繼承Timer類類似

          package com.duduli.li.quartz;

          import org.quartz.JobExecutionContext;
          import org.quartz.JobExecutionException;
          import org.springframework.scheduling.quartz.QuartzJobBean;

          public class AutoRun extends QuartzJobBean{

              
          private Display  display;
              
              
          public void setDisplay(Display display) {
                  
          this.display = display;
              }

              @Override
              
          protected void executeInternal(JobExecutionContext arg0)
                      
          throws JobExecutionException {
                  display.disp();
              }
          }

          spring配置文件:

                              <!-- quartz進行自動調度 -->
          <!-- 具體實現類 -->
              
          <bean id="display2"    class="com.duduli.li.quartz.Display"></bean>
              
          <!-- springquartz的支持,Auto類實現quartzjob接口的類,jobDataAsMap是將實現類注入其中 -->
              
          <bean id="quartz" class="org.springframework.scheduling.quartz.JobDetailBean">
                  
          <property name="jobClass" value="com.duduli.li.quartz.AutoRun"/>
                  
          <property name="jobDataAsMap">
                      
          <map>
                          
          <entry key="display" value-ref="display2"></entry>
                      
          </map>
                  
          </property>
              
          </bean>
              
          <!-- springquartz的支持,對其值的設定 -->
              
          <bean id="simpleTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
                  
          <property name="jobDetail" ref="quartz"></property>
                  
          <property name="startDelay" value="2000"></property>
                  
          <property name="repeatInterval" value="2000"></property>
              
          </bean>
              
          <!-- 啟動自動調度 -->
              
          <bean id="quartzTest" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                  
          <property name="triggers">
                      
          <list>
                          
          <ref bean="simpleTask"/>
                      
          </list>
                  
          </property>
              
          </bean>

          client調用:

          package com.duduli.li.quartz;


          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          public class Client {

              
          public static void main(String[] args) {
                      BeanFactory factory = 
          new ClassPathXmlApplicationContext("applicationContext.xml");
                      factory.getBean("quartzTest");
                  }
          }

          posted on 2009-03-12 12:42 Sun River 閱讀(457) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 开封市| 崇左市| 烟台市| 宣恩县| 体育| 扶绥县| 舟曲县| 邳州市| 泸溪县| 天等县| 呈贡县| 拉萨市| 铁岭市| 漠河县| 全南县| 盐城市| 南安市| 古交市| 红河县| 夏津县| 浮山县| 定西市| 长沙市| 清原| 神农架林区| 建瓯市| 阳城县| 商丘市| 广安市| 乌审旗| 芦溪县| 中方县| 勐海县| 达孜县| 隆林| 巫溪县| 庆阳市| 兴和县| 苍南县| 新安县| 齐齐哈尔市|