spring mvc @Scheduled方法被执行两次

长沙大猫 长沙大猫 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在本地和本地tomcat上查看日志输出都会在同一时间点被执行两次 请问有大侠知道是为什么么,网上找的各种无解,以下是我的配置文件:
只在spring的配置文件中添加了
<!-- 注解定时任务 -->
<task:annotation-driven/>
<context:component-scan base-package="com.spring.*">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

java类中:

@Component
@Lazy(false)
public class TimeTask {
@Autowired
private SendSMSService sendSMSService;
@Autowired
private SMSSendMsgLogService smsLogService;
@Autowired
private UserService userService;

/**
* 心跳更新。启动时执行一次,之后每隔30秒执行一次
* 从日志中获取待发送短信进行发送
* @throws Exception
**/
@Scheduled(cron = "0/10 * * * * ?")
public void timeSendSMS() throws Exception{
System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm")+"进入定时发送待发送短信任务~~~~~~~~~~~~");
SmsSendLogParams entityPar = new SmsSendLogParams();
entityPar.setStatus(2);
List<SmsSendLog> logList = smsLogService.getEntityListFroPar(entityPar);
for (SmsSendLog smsSendLog : logList) {
sendSMS(smsSendLog.getID());
}
}

private void sendSMS(Integer logId) throws Exception {
String returnStatus;
Map<String,String> msgInfo = new HashMap();
SmsSendLog log = smsLogService.getEntityListFroID(logId);
//判断用户是否存在
UserInfo userinfo = userService.getUserInfoFroIdActivities(log.getUSERID());
if(null!=userinfo){
msgInfo.put(log.getSENDNUM(), log.getSENDTEXT());
returnStatus = this.sendSMSService.sendSMS(msgInfo);
}else{
returnStatus="不存在的用户";
}
//记录日志
SmsSendLogParams par = new SmsSendLogParams();
par.setId(log.getID());
par.setFailReason(returnStatus);
par.setSendcs(log.getSENDCS()+1);
par.setSendDate(new Date());
par.setSendNum(log.getSENDNUM());
par.setSendText(log.getSENDTEXT());
if("SUCCESS".equals(returnStatus)){
par.setStatus(1);
}else{
par.setStatus(0);
}
par.setUserId(log.getUSERID());
smsLogService.editEntity(par);
}
}



...全文
评论 6
收藏 已收藏
分享
返回顶部
长沙大猫
Web 开发 81,108 成员 341,721 内容