springboot在Linux下定时任务执行两次

    一直在windows上开启,本地跑项目,未在Linux上玩过,最近搭建测试服务器,发现一个定时任务每次都是执行两次,甚是费解。本地没有这个现象。

    然后开始了百度查资料之旅,有的说tomcat的配置有问题(https://blog.youkuaiyun.com/yaobengen/article/details/70312663点击打开链接),按照步骤修改之后依然无用,然后看到有人说是springboot启动了两次,然后去重启项目,果然发现是springboot启动了两次,分析可能是内置的tomcat没有移除导致的,然后去掉内置的tomcat,启动项目,还是启动两次???很是奇怪,继续分析,本项目除了启动类还有一个初始化的类,如下:

 
public class SpringBootStartApplication extends SpringBootServletInitializer {
    public SpringBootStartApplication() {
    }

    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(new Class[]{Application.class});
    }
}
然后发现启动类也继承了这个

SpringBootServletInitializer

public class Application extends SpringBootServletInitializer
原因找到:应该是继承了两次导致springboot加载了两次配置文件,启动了两次,具体
SpringBootServletInitializer的介绍看一个大神的博客:https://blog.youkuaiyun.com/songhaifengshuaige/article/details/54138023

遂删除那个多余的类,再次测试,只启动了一次,定时任务也只执行一次。

如果有人了解的其深层原理,可以一起讨论交流下,希望各位大佬不吝赐教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值