spring mvc @Scheduled方法被执行两次

长沙大猫 2016-06-19 06:10:45
我在本地和本地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);
}
}



...全文
1001 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农在线搬砖 2019-03-20
  • 打赏
  • 举报
回复 1
<!--定时器配置start-->
<task:annotation-driven/>
<context:annotation-config/>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!-- <context:component-scan base-package="com.gmxx.quartz"/> -->
<!--定时器配置end-->
我是删除<!-- <context:component-scan base-package="com.gmxx.quartz"/> --> 这一段就执行一次了
DoNow☼ 2018-12-27
  • 打赏
  • 举报
回复
这篇文章才是最终的解决之道,其他都是什么傻屌解决 https://blog.csdn.net/ID19870510/article/details/78020774#commentBox
jie8171256 2016-08-25
  • 打赏
  • 举报
回复
问题解决了吗,我也遇到这种问题
kutuzov2016 2016-06-28
  • 打赏
  • 举报
回复
查看一下 是不是有两个相同的java进程
长沙大猫 2016-06-27
  • 打赏
  • 举报
回复
用的注解 没有配置
Mr_yhl 2016-06-23
  • 打赏
  • 举报
回复
你这个配置是web配置? 定时任务的配置呢?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧