关于@Scheduled不执行的原因分析

 更新时间:2021年12月27日 14:58:46   作者:生活不只*眼前的苟且  
这篇文章主要介绍了关于@Scheduled不执行的原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Scheduled不执行的原因

1. 今天用@Schedule做了一个定时任务

希望凌晨1点执行,代码如下

@Service
public class ParseJsonService { 
    @Scheduled(cron = "0 0 1 * * ?")
    public void parseMongodbDataToJson() {
    }
}

第二天来公司了,发现根本没有执行。然后开始查找问题

2. 首先遇到查到的一个解决方案

说是spring的版本的问题,我看了下我以前用的定时任务,的确spring用的是4. 于是我将spring的版本换成了4,发现还是不好使

3. 还有版本说要在spring

的配置文件中加上注解驱动

<task:annotation-driven />

并且还要加上default-lazy-init="false"属性,说是不让spring懒加载,但是发现还是不行

4. 又查到版本说要在Bean上加上@Lazy(false)

让spring对该Bean在启动的时候就加载,但是发现还是不行

终极解决方案(适合我,不一定适合你, 我用的Spring版本是3,不是4)

第一步:在spring的配置文件中加上

<task:annotation-driven />

第二步:在上述Bean上加上

@EnableScheduling

代码如下:

@Service
@EnableScheduling
public class ParseJsonService { 
 @Scheduled(cron = "0 0 1 * * ?") 
 public void parseMongodbDataToJson() {
 
  }
}

@Scheduled不生效的排查记录

@Scheduled 不生效的排查记录

公司之前项目要加个定时处理,觉得so easy。

 <!-- 开启定时任务 -->
    <task:annotation-driven />
    <!-- 开启注解 -->
    <context:annotation-config />
    <!-- 指定相关的包路径 -->
    <context:component-scan base-package="com.ffrj.schedule"/>
@Component
public class CommonSchedule {
    
    //@Scheduled(cron = "0 0 1 * * ?")
    @Scheduled(cron = "*/5 * * * * ?")
    public void avg() {
        System.out.println("现在开始计算平均值 当前时间为");
    }
}

本以为就搞定了 ,发现不生效!!!

开始网上查询资料。

  • @EnableScheduling 也加了 不生效!
  • @Lazy(false) 也加了 不生效!!

开始有点慌了,看了下包路径 没问题啊 ,想着用xml 配一遍

<task:annotation-driven /> 
	<bean id="myTaskXml" class="com.ffrj.schedule.CommonSchedule "></bean>
	<task:scheduled-tasks>
		<task:scheduled ref="myTaskXml" method="show" cron="*/5 * * * * ?" />
	</task:scheduled-tasks>
    <context:component-scan base-package="com.ffrj.schedule" />

发现还是不生效!!!!!!!

这时候前端访问了一下我的接口 ,看了看log ,卧槽 system 打印了 !!!

冷静了一下

@Lazy(false) 不生效??没道理啊 然后开始翻配置文件看是不是有些bean 添加 default-lazy-init=“true” 属性了 ,也没有啊。

最后发现 :

web.xml

不知道哪位奇葩 把这行给注掉了。

果断取消注释 解决问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java8的Lambda和排序

    Java8的Lambda和排序

    这篇文章主要介绍了Java8的Lambda和排序,对数组和集合进行排序是Java 8 lambda令人惊奇的一个应用,我们可以实现一个Comparators来实现各种排序,下面文章将有案例详细说明,想要了解得小伙伴可以参考一下
    2021-11-11
  • maven安装配置的实现步骤

    maven安装配置的实现步骤

    本文主要介绍了maven安装配置的实现步骤,包括下载和安装Maven,配置Maven的环境变量,以及创建Maven项目,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • java设计模式之桥接模式(Bridge)

    java设计模式之桥接模式(Bridge)

    这篇文章主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 关于SpringMVC的异常处理机制详细解读

    关于SpringMVC的异常处理机制详细解读

    这篇文章主要介绍了关于SpringMVC的异常处理机制详细解读,SpringMVC是目前主流的Web MVC框架之一,本文将分析SpringMVC的异常处理内容,需要的朋友可以参考下
    2023-05-05
  • Java多线程Atomic包操作原子变量与原子类详解

    Java多线程Atomic包操作原子变量与原子类详解

    这篇文章主要介绍了Java多线程Atomic包操作原子变量与原子类详解,简单介绍了Atomic,同时涉及java.util.concurrent中的原子变量,Atomic类的作用等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Mybatis 返回值类型和参数传递的配置方法

    Mybatis 返回值类型和参数传递的配置方法

    在 MyBatis 中,返回值类型和参数传递是 Mapper 接口中至关重要的两个方面,正确理解和使用它们可以帮助我们高效、准确地进行数据库操作,接下来通过本文给大家介绍Mybatis 返回值类型和参数传递的配置方法,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • 详解spring中使用Elasticsearch的代码实现

    详解spring中使用Elasticsearch的代码实现

    本篇文章主要介绍了详解spring中使用Elasticsearch的代码实现,具有一定的参考价值,有兴趣的可以了解一下
    2017-05-05
  • mybatis 逆向生成后遵循java驼峰法则的解决

    mybatis 逆向生成后遵循java驼峰法则的解决

    这篇文章主要介绍了mybatis 逆向生成后遵循java驼峰法则的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏

    阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏

    这篇文章主要介绍了阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Java实战之简单的文件管理器

    Java实战之简单的文件管理器

    这篇文章主要介绍了Java实战之简单的文件管理器,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论