這兩天研究了一下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
方式二:Spring使用MethodInvokingJobDetailFactoryBean,普通Java類均可(這個是我上面寫的方法) class
二、 Spring把Trigger分爲SimpleTrigger和CronTrigger,上面是用前者定義執行的時間間隔和執行次數的,若是用後者,則能夠作以下定義(每隔5秒執行一次) cronTriggerBean.setCronExpression("0/5 * * * * ?");