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]