liuxi1024 发表于 2013-2-4 22:16:16

Spring中Quartz动态设置cronExpression

前面在使用quartz进行时序调度工作是
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">         <property name="jobDetail" ref="myJobDetail" />          <!-- run every morning at 23:59 am -->         <property name="cronExpression" value="0 59 23 * * ?" />       </bean> 中cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我们可以直接调用CronTriggerBean中设置cronExpression的方法,就可以顺利解决问题了。
 
1、更改如上配置
<bean id="cronTrigger" class="self.lx.application.internal.InitializingCronTrigger">       <property name="jobDetail" ref="myJobDetail" />       <property name="uploadService" ref="uploadService" />    </bean> 
2、InitializingCronTrigger类
public class InitializingCronTrigger extends CronTriggerBean implementsSerializable {private UploadService uploadService;public void setUploadService(UploadService uploadService) {this.uploadService = uploadService;String cronExpression = getCronExpressionFromDB();if (cronExpression != null && !cronExpression.equals("")) {try {setCronExpression(cronExpression);} catch (ParseException e) {e.printStackTrace();}}}private String getCronExpressionFromDB() {return uploadService.getUploadTime();}} 
3、附上cronExpression 格式说明
<div class="quote_title"> 写道,来自http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html
页: [1]
查看完整版本: Spring中Quartz动态设置cronExpression