springboot根据启动文件关闭定时任务的解决方法

 更新时间:2025年08月29日 10:43:45   作者:追逐梦想永不停  
本文给大家介绍springboot根据启动文件关闭定时任务的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、前言

项目里有3个配置文件:

//生产环境用
application-prod.yml
//测试环境用
application-test.yml
//本地启动用
//为什么本地不用test?因为测试环境是linux系统,本地是windows系统,路径不一致,本地有盘符,还是得区分开
application-dev.yml

现在想让本地dev启动时,不执行定时任务,防止定时任务误启动导致影响测试环境。

代码也不想改动太多。

二、解决方法

找到了一种最小的改动方法。

1.如果是springboot项目启动类里加了@EnableScheduling注解,那就先把这个注解拆出来,不要加,如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

2.单独建一个定时任务配置java类,如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@Profile("!dev")  // 非 dev 环境启用定时任务
@EnableScheduling
public class SchedulingConfig {
  //这个配置类为空类即可,不需要内容
}

其中,@Configuration是标志这个类是配置类,加了springboot启动时,才会扫描到这个类;

@EnableScheduling注解标志启用定时任务功能,有了这个,其他类配置的定时任务@Scheduled(cron = "0 0/30 * * * ?")这种才会生效;

@Profile("!dev")表示,只有启动配置文件不是dev,才会加载这个类,如果是dev就不加载。

只有加载了这个类,才有@EnableScheduling注解,才会开启定时任务执行;
如果不加载这个类,那就相当于没有@EnableScheduling注解,其他类配置的定时任务@Scheduled(cron = "0 0/30 * * * ?")不会生效,也就不会执行。

3.当application.yml里用这个启动时:

spring:
  profiles:
    active: dev

或者启动java项目用参数-Dspring.profiles.active=dev时(这个优先级高,会覆盖application.yml的配置):

就说明启动参数是dev,后续读取application-dev.yml文件;

因为启动参数是dev,所以根据@Profile("!dev") ,不加载java文件,没有开启定时任务注解,也就不会执行定时任务了。

4.可以测试,如果开启了定时任务,控制台就会有这个日志,搜索Scheduler(没有开启就没有):

11:38:38.520 [main] INFO  o.s.s.c.ThreadPoolTaskScheduler - [initialize,181] - Initializing ExecutorService 'taskScheduler'

到此这篇关于springboot根据启动文件关闭定时任务的文章就介绍到这了,更多相关springboot启动文件关闭定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解快速排序算法中的区间划分法及Java实现示例

    详解快速排序算法中的区间划分法及Java实现示例

    这篇文章主要介绍了详解快速排序算法中的区间划分法及Java实现示例,文中分别介绍了快排时两种区间划分的思路,需要的朋友可以参考下
    2016-04-04
  • springboot验证码生成以及验证功能举例详解

    springboot验证码生成以及验证功能举例详解

    登录注册是大部分系统需要实现的基本功能,同时也会对登录验证增加需求,下面这篇文章主要给大家介绍了关于springboot验证码生成以及验证功能的相关资料,需要的朋友可以参考下
    2023-04-04
  • JDBC实现Mysql自动重连机制的方法详解

    JDBC实现Mysql自动重连机制的方法详解

    最近在工作中发现了一个问题,通过查找相关的资料终于解决了,下面这篇文章主要给大家介绍了关于JDBC实现Mysql自动重连机制的相关资料,文中给出多种解决的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • 关于jd-gui启动报This program requires Java 1.8+的错误问题及解决方法

    关于jd-gui启动报This program requires Java 1.8+的错误问题及解决方法

    最近,在Mac使用上JD-GUI启动时总是报错,接下来通过本文给大家介绍关于jd-gui启动报this program requires Java 1.8+的错误问题及解决方法,需要的朋友可以参考下
    2022-05-05
  • Java实现pdf文件合并的使用示例

    Java实现pdf文件合并的使用示例

    本文主要介绍了Java实现pdf文件合并的使用示例,主要是将需要合并的pdf文件都拷贝到指定目录a中,调用该工具类将该目录作为第一个参数,第二个参数传入输出文件对象即可,感兴趣的可以了解一下
    2023-12-12
  • IDEA中如何正确快速打jar包的方式

    IDEA中如何正确快速打jar包的方式

    这篇文章主要介绍了IDEA中如何正确快速打jar包,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 如何将文件流转换成byte[]数组

    如何将文件流转换成byte[]数组

    这篇文章主要介绍了如何将文件流转换成byte[]数组,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 使用VisualVM分析日志

    使用VisualVM分析日志

    文章强调程序员需掌握多种工具(如JMeter、ELK、Prometheus等)应对工作挑战,避免线上事故,重点介绍VisualVM作为Java故障排查工具,通过分析大对象和GC监控,提升代码质量与问题定位效率
    2025-07-07
  • Java的MybatisPlus详解

    Java的MybatisPlus详解

    这篇文章主要介绍了Java的MybatisPlus详解,MyBatis-Plus是一个 MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,需要的朋友可以参考下
    2023-07-07
  • 使用SpringSecurity设置角色和权限的注意点

    使用SpringSecurity设置角色和权限的注意点

    这篇文章主要介绍了使用SpringSecurity设置角色和权限的注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论