spring mvc @Scheduled方法被执行两次
我在本地和本地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类中:
只在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);
}
}
...全文
相关推荐
springmvc实现的定时器
`fixedRate`参数表示两次执行之间的间隔时间(以毫秒为单位)。完成以上步骤后,你的Spring MVC应用已经具备了定时任务的能力。当你启动应用时,定时任务就会自动开始执行。
spring定时器启动两次原因及解决
标题中的“spring定时器启动两次原因及解决”指的是在Spring框架中使用了定时任务功能,如Spring Boot的`@Scheduled`注解或者Spring Task模块,但遇到了定时任务被触发执行了两次的问题
Spring3.0 mvc 定时器及多线程任务demo
此时,可以在定时任务中调用标记了`@Async`的方法,实现定时任务和多线程任务的完美结合。总结,Spring 3.0 MVC中的定时器和多线程任务是提升应用程序效率的重要工具。
spring_mvc注解总结
**@Scheduled(cron="")**: 这是Spring提供的定时任务注解,允许开发者使用cron表达式定义任务执行计划。
spring mvc定时任务需要的所有jar包,包括slf4j、log4j
创建定时任务:编写带有`@Scheduled`注解的方法,这个注解允许你定义任务的执行周期,如cron表达式或者固定延迟。4.


Web 开发
