<bean id= "TestJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="xx.TestQuartzJob"/> <!-- 可以封装各种数据到JobExecutionContext里,包括接口、类,其中testServiceImpl是Spring管理的Bean,需要什么声明 --> <property name="jobDataAsMap"> <map> <entry key="test" value="test"/> <entry key ="testServiceImpl" value-ref="testServiceImpl"/> </map> </property> </bean> <bean id= "TestTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="TestJobDetail" /> <property name="cronExpression" value="0 0/1 * * * ?" /> </bean> <bean id= "testSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers" > <list> <ref bean="TestTrigger" /> </list> </property> </bean> <bean id="testServiceImpl" class="xx.service.impl.TestServiceImpl">
public class TestQuartzJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException
{
// 获取Job配置的接口
TestServiceImpl testServiceImpl = (TestServiceImpl) arg0.getJobDetail().getJobDataMap().get("testServiceImpl");
// 执行业务方法
quartzStart();
}
public void quartzStart(){
// 业务方法...
}
}
<bean id="TestTrigger" class="xx.InitCronTriggerFactoryBean"> <property name="jobDetail" ref="TestJobDetail" /> <property name="key" value="key" /> </bean>
public class InitCronTriggerFactoryBean extends CronTriggerFactoryBean implements Serializable {
private static final long serialVersionUID = 1L;
@Resource
private SysParamService sysParamService;
private String key;
public void setKey(String key)
{
this.key = key;
setCronExpression(getCronExpressionFromDB());
}
private String getCronExpressionFromDB()
{
if(StringUtils.isEmpty(key))
return "0 0/5 * * * ?";
SysParam sysParam = new SysParam();
try
{
sysParam = sysParamService.getNameByKey(key);
}
catch (Exception e)
{
e.printStackTrace();
}
if(sysParam != null && !StringUtils.isEmpty(sysParam.getParamValue()))
return sysParam.getParamValue();
return "0 0/5 * * * ?";
}
}
<bean id="TestTrigger" class="xx.InitCronTriggerFactoryBean"> <property name="jobDetail" ref="TestJobDetail" /> <property name="key" value="key" /> <property name="sysParamService" ref="sysParamService" /> </bean> <bean id="sysParamService" class="xx.service.impl.SysParamServiceImpl">
public class InitCronTriggerFactoryBean extends CronTriggerFactoryBean implements Serializable {
private static final long serialVersionUID = 1L;
private SysParamServiceImpl sysParamService;
private String key;
public void setKey(String key)
{
this.key = key;
}
public void setSysParamService(SysParamServiceImpl sysParamService)
{
this.sysParamService = sysParamService;
setCronExpression(getCronExpressionFromDB());
}
private String getCronExpressionFromDB()
{
if(StringUtils.isEmpty(key))
return "0 0 0/1 * * ?";
SysParam sysParam = new SysParam();
try
{
sysParam = sysParamServiceImpl.getNameByKey(key);
}
catch (Exception e)
{
e.printStackTrace();
}
if(sysParam != null && !StringUtils.isEmpty(sysParam.getParamValue()))
return sysParam.getParamValue();
return "0 0 0/1 * * ?";
}
}
public class QuartzManager {
private static final Logger logger = LogPresident.getRootLogger();
private static SchedulerFactory schedulerFactory = new StdSchedulerFactory();
private static Map<String, JobKey> jobKeyMap = new HashMap<String, JobKey>();
/**
* 增加一个定时任务
* @author zhiyuan.wu
* @date 2017年3月30日
* @param jobName
* @param triggerName
* @param cls
* @param date
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void addJob(String jobName, String triggerName, Class cls, Date date)
{
try
{
Scheduler scheduler = schedulerFactory.getScheduler();
// job
JobDetail jobDetail = JobBuilder.newJob(cls).withIdentity(jobName, Scheduler.DEFAULT_GROUP).build();
// 触发器
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(triggerName, Scheduler.DEFAULT_GROUP).startAt(date).build();
scheduler.scheduleJob(jobDetail, trigger);
// 启动
scheduler.start();
jobKeyMap.put(jobDetail.getKey().getName(), jobDetail.getKey());
}
catch (Exception e)
{
logger.error("--------添加定时任务出错:" + e.getMessage(), e);
}
}
/**
* 删除对应的定时任务
* @author zhiyuan.wu
* @date 2017年3月29日
* @param jobKey
*/
public static void removeJob(JobKey jobKey)
{
Scheduler scheduler;
try
{
scheduler = schedulerFactory.getScheduler();
scheduler.deleteJob(jobKey);
jobKeyMap.remove(jobKey.getName());
}
catch (SchedulerException e)
{
logger.error("--------删除定时任务出错:" + e.getMessage(), e);
}
}
/**
* 启动所有定时任务
* @author zhiyuan.wu
* @date 2017年3月29日
*/
public static void startJobs()
{
try
{
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
}
catch (Exception e)
{
logger.error("--------启动所有定时任务出错:" + e.getMessage(), e);
}
}
/**
* 停止所有定时任务
* @author zhiyuan.wu
* @date 2017年3月29日
*/
public static void shutdownJobs()
{
try
{
Scheduler sched = schedulerFactory.getScheduler();
if (!sched.isShutdown())
{
sched.shutdown();
}
}
catch (Exception e)
{
logger.error("--------停止所有定时任务出错:" + e.getMessage(), e);
}
}
/**
* 修改定时任务
* @author zhiyuan.wu
* @date 2017年3月29日
* @param jobKey
* @param jobName
* @param triggerName
* @param cls
* @param date
*/
@SuppressWarnings("rawtypes")
public static void modifyJobTime(JobKey jobKey, String jobName, String triggerName, Class cls, Date date)
{
try
{
removeJob(jobKey);
addJob(jobName, triggerName, cls, date);
}
catch (Exception e)
{
logger.error("--------修改定时任务出错:" + e.getMessage(), e);
}
}
/**
* 打印当前定时任务的jobName
* @author zhiyuan.wu
* @date 2017年3月29日
* @throws SchedulerException
*/
public static void printJobName() throws SchedulerException
{
for (String jobName : jobKeyMap.keySet())
{
logger.info("--------jobName:" + jobName);
}
}
}
public class TestJob implements Job {
private static final Logger logger = LogPresident.getRootLogger();
public void execute(JobExecutionContext context) throws JobExecutionException
{
JobKey jobKey = context.getJobDetail().getKey();
logger.info("--------定时任务开始执行:" + jobKey.getName());
// 业务方法...
// 移除定时任务
QuartzManager.removeJob(jobKey);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有