Spring动态修改任务调度时间

本文介绍了如何在Spring中动态地修改任务调度时间。通过在配置文件中加入特定的Spring管理类,并使用cron表达式来设定任务执行时间。当需要动态调整时,可以通过实现ITestTask接口并结合SpringUtils工具类进行修改。详细步骤包括新建配置文件、导入到项目、在控制层添加测试方法等,最终实现任务调度时间的动态变更。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Spring配置文件中加入如下配置:

<!-- Task Execution and Scheduling -->
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>

在被Spring所管理的类的方法上加上cron表达式,可根据cron表达式所表示的时间执行任务,如:

package com.lytx.ims.task.impl;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.http.ParseException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import com.lytx.common.util.DjmDateUtil;
import com.lytx.common.util.SmsUtil;
import com.lytx.common.xml.AppProps;
import com.lytx.common.xml.XmlUtils;
import com.lytx.ims.dictionary.service.IDictionaryService;
import com.lytx.ims.equipMaintain.extra.IProcedureAdapter;
import com.lytx.ims.publ.service.IPublService;
import com.lytx.ims.sms.domain.SmsRecord;
import com.lytx.ims.sms.service.ISmsService;
import com.lytx.ims.task.ISmsNoticeTask;

/**
 * Copyright: Copyright (c) 2017 DJM
 * 
 * 短信通知,实现类
 * 
 * @author DJM
 * @version: V4.0
 * @date: 2017-08-25 09:55:51
 */
@Service
public class SmsNoticeTask implements ISmsNoticeTask {
	
	private static final Logger logger = Logger.getLogger(SmsNoticeTask.class);
	
	@Autowired
	private IDictionaryService dictionaryService;
	
	@Autowired
	private IPublService publService;
	
	@Autowired
	private ISmsService smsService;
	
	//超时未签收,短信通知管理员
	//@Scheduled(cron = "10 0/1 * * * ?")//测试或演示
	@Scheduled(cron = "10 10 8 * * ?")//商用部署
	@Override
	public void noSignNotice(){
		String isOpen = dictionaryService.getValueByKey("IS_OPEN_SMS_NOTICE");//读取短信开关
		if(isOpen.isEmpty()||isOpen.equals("0")){
			logger.info("超时未签收,短信通知管理员 ==> 短信通知已关闭,如需短信通知,请打开短信通知开关!");
			return;
		}
		
		String isPlatform = dictionaryService.getValueByKey("IS_USE_SMS_PLATFORM");//是否采用[短信平台]的方式发送短信通知
		
		String timeout = dictionaryService.getValueByKey("SMS_NOTICE_TIMEOUT");//获取超时时长
		if(timeout==null||timeout.isEmpty()){
			logger.error("超时未签收,短信通知管理员 ==> 超时未签收短信通知功能,未指定超时时长!");
			return;
		}
		Map<String, Object> conditions = new HashMap<String, Object>();
		String queryTime = DjmDateUtil.formatDate(DjmDateUtil.addMins(new Date(), -1*Integer.parseInt(timeout)*6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值