spring+quartz

這兩天研究了一下spring和quartz結合,下面具體的說一下: spring

首先是spring中的配置: 服務器

   <!-- 這句話關聯我要執行的方法所在的類 -->
  <bean id="executeMethod" class="cc.qma.Method" />
  <!-- 定義目標bean和bean中的方法 -->
  <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="executeMethod" />
<!-- 這裏的value是所要執行的方法 -->
    <property name="targetMethod" value="produce" />
  </bean>
  <!-- ======================== 調度觸發器 ======================== -->
  <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- 觸發器中的屬性,第一個是時間間隔,是用毫秒錶示的,這個必需要寫,不然默認是0,會彈出錯誤 -->
   <property name="repeatInterval" value="2000" />
    <property name="jobDetail" ref="jobDetail" />
  </bean>
  <!-- ======================== 調度工廠 ======================== -->
<!--針對這句話lazy-init="true",默認是false,程序加載時自動加載-->
  <bean id="startQuertz" lazy-init="true" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!--屬性autoStartup,是判斷程序加載後是否當即執行,默認是true-->
    <property name="autoStartup" value="false" />
    <property name="triggers">
      <list>
        <ref bean="simpleTrigger" />
      </list>
    </property>
  </bean>
</beans>
public void produce(){
//這裏的我spring控制的程序,具體要執行什麼,本身寫
} spa

針對spring,我如今默認只加載,不執行,由於我要從前天獲取值,而後修改個人執行間隔和執行次數等屬性,因此我還要有一個和前臺頁面關聯的bean,在這個bean中,來開啓produce方法,暫定這個bean類的名字是FormBean具體例子以下:
public void FormBean(){
//經過WebApplicationContext實例化爲context獲取spring中的bean
......
//下面能夠進行一些設置
simpleTriggerBean.setRepeatInterval(repInterval);
try {
//在開始執行以前必定要執行的方法
      scheduler.rescheduleJob(triggerName, groupName, newTrigger);
//開始執行
      scheduler.start();
    }
    catch (Exception e) {
      e.printStackTrace();
    } orm

} 繼承

另外,scheduler.pauseTrigger(triggerName, groupName);這句話是暫停執行,不要用,scheduler.shutdown,由於這句話是所有中止,而且不可以再次開始,除非你重啓服務器 接口

另外: get

一、SPring Bean注入做業的兩種方式: it

           方式一:@一、Spring使用JobDetailBean類,繼承QuartzJobBean,重寫
                       protected void executeInternal(JobExecutionContext context)方法 io

                       @二、  或實現Job接口,在execute方法中調用執行任務
                                                              

            方式二:Spring使用MethodInvokingJobDetailFactoryBean,普通Java類均可(這個是我上面寫的方法) class

二、 Spring把Trigger分爲SimpleTrigger和CronTrigger,上面是用前者定義執行的時間間隔和執行次數的,若是用後者,則能夠作以下定義(每隔5秒執行一次) cronTriggerBean.setCronExpression("0/5 * * * * ?");

相關文章
相關標籤/搜索