在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