一.首先明白Spring下Quartz的使用:
需要用到3个类:由上而下依次引用
第一个类
注入了triggers的调度工厂Bean类
org.springframework.scheduling.quartz.SchedulerFactoryBean
第二个类
注入了jobDetail和startDelay及repeatInterval的简单触发器Bean类:
org.springframework.scheduling.quartz.SimpleTriggerBean
或者注入了jobDetail和cronExpression的动态触发器:
org.springframework.scheduling.quartz.CronTriggerBean
第三个类
注入了targetObject和targetMethod的任务详情工厂Bean类:
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
二.第一种是静态的定时任务
主要是SimpleTriggerBean的属性repatInterval的赋值:设置间隔周期的毫秒值
1.书写详细的配置文件:
<!--备份数据库配置 -->
<bean id="simpleTrigger_dbbak" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="dbbakjob" />
<property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
<property name="repeatInterval" value="36000000" /><!-- 毫秒级计算,900000==每15分钟调度一次 -->
</bean>
<bean id="dbbakjob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="metaDataDbBackupService" />
</property>
<property name="targetMethod" value="backupDb" />
<property name="concurrent" value="true" /><!-- 作业不并发调度 -->
</bean>
2.service的Bean注入
<!-- 元数据的备份操作 -->
<bean id="metaDataDbBackupService"
class="com.gilight.dep.metadata.service.impl.MetaDataDbBackupServiceImpl">
<property name="cacheManager" ref="cacheManager"></property>
<property name="metaDataBaseRepository" ref="metaDataBaseRepository"></property>
<property name="metaModelQueryService" ref="metaModelQueryService"></property>
</bean>
3.书写对应的业务类
- MetaDataDbBackupServiceImpl 业务类需要实现
- IMetaDataDbBackupService 接口
public class MetaDataDbBackupServiceImpl extends BasicServiceImpl<String> implements
IMetaDataDbBackupService {
private static final Logger logger = Logger.getLogger(MetaDataDbBackupServiceImpl.class);
private IMetaDataBaseRepository metaDataBaseRepository = null;
private IMetaModelQueryService metaModelQueryService = null;
public IMetaModelQueryService getMetaModelQueryService() {
return metaModelQueryService;
}
public void setMetaModelQueryService(
IMetaModelQueryService metaModelQueryService) {
this.metaModelQueryService = metaModelQueryService;
}
public IMetaDataBaseRepository getMetaDataBaseRepository() {
return metaDataBaseRepository;
}
public void setMetaDataBaseRepository(
IMetaDataBaseRepository metaDataBaseRepository) {
this.metaDataBaseRepository = metaDataBaseRepository;
}
@Override
public void backupDb() throws Exception {
String path=(String) CustomizedPropertySpringConfigurer.getContextProperty("jdbc.backuppath");
int radomInt =