定时任务@schedule开启两次问题解决

Posted superchong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务@schedule开启两次问题解决相关的知识,希望对你有一定的参考价值。

1,定时任务

  定时任务有三种实现方式,java的timer类,spring框架,quartz插件。

  在Spring框架中,实现定时任务很简单。常用的实现方式是使用注解@Schedule。

public class Scheduler{

    @Scheduled(cron = "0 0 3 * * ?")
    public void demoSchedule() {
          doWork();
    }
}

  然后在spring配置文件中加上扫描开关

<task:annotation-driven/>

2,定时任务开启两次

  发现定时任务总是执行两次,按照网上的说法,把context中的app设置为空之类的啥,反正试了没效果!

  我的解决方法是,单独使用配置文件spring-schedule.xml配置任务。

  

/进行定时任务的类,将其定义为一个bean
<bean id="test" class="com.service.TestImplel"></bean>
//通过task标签,定义定时功能
<task:scheduled-tasks>
   <task:scheduled ref="test" method="doWork" cron="0 0/5 ** * ?" />
</task:scheduled-tasks>    

  分析加载两次原因是xml初始化一次,注解扫描一次,所以加载两次,只要把注解单独配置,指定启动一次即可解决该问题。

以上是关于定时任务@schedule开启两次问题解决的主要内容,如果未能解决你的问题,请参考以下文章

使用spring@Scheduled进行任务定时

java的定时任务之--@Scheduled

MYSQL定时任务

Mysql定时任务详情

springboot跑定时任务

mysql开启定时调度任务执行