当前位置: 代码网 > it编程>编程语言>Java > springboot定时任务不起作用问题及解决

springboot定时任务不起作用问题及解决

2024年11月29日 Java 我要评论
springboot定时任务不起作用今天再写一个定时任务时,发现所有配置都没问题,但定时任务就是不执行,通过各种对比测试排除法,终于找到问题所在。下面看一下启动类@springbootapplicat

springboot定时任务不起作用

今天再写一个定时任务时,发现所有配置都没问题,但定时任务就是不执行,通过各种对比测试排除法,终于找到问题所在。

下面看一下启动类

@springbootapplication
@componentscan(value = "com.timer.timer_demo",lazyinit = true)
@enablescheduling
public class timerdemoapplication {
    public static void main(string[] args) {
        springapplication.run(timerdemoapplication.class, args);
    }
}

启动类上有三个注解

其中有个注解是有个lazyinit属性,是何意思呢?

applicationcontext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化(也就是依赖注入)。

提前实例化意味着作为初始化过程的一部分,applicationcontext实例会创建并配置所有的singleton bean。

通常情况下这是一件好事,因为这样在配置中的任何错误就会被立刻实现。

延时加载,设置为lazy = true 的bean将不会在applicationcontext启动时提前被实例化,而是第一次向容器通过getbean索取bean时实例化的。

这段解释也就是说:

这个属性为true时,bean类将延迟加载,那样的话定时任务类没在启动时加载进去,自然就没法执行定时任务,此时怎么解决?

总不能把之前启动类的这个属性去掉吧,在启动类上添加这个得前辈大神肯定有自己考虑,不动为妙,那就指定某些类不使用延迟加载。

代码如下:

@component
@lazy(false)
public class mytimertest {
    //表示每隔1秒
    @scheduled(fixedrate=1000)
    public void cleardata(){
        system.out.println("定时任务"+system.currenttimemillis());
    }
}

想让哪个类不延迟加载就添加@lazy(false) 注解即可

好了,springboot的延迟加载坑就解决了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com