iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot项目中使用@Scheduled读取动态参数
  • 550
分享到

SpringBoot项目中使用@Scheduled读取动态参数

2024-04-02 19:04:59 550人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录使用@Scheduled读取动态参数1、基于@Scheduled可配置开发2、基于代码实现Spring Boot Scheduled动态配置使用@Scheduled读取动态参数

使用@Scheduled读取动态参数

1、基于@Scheduled可配置开发


application.propertites: 
read.timer.parmas=0 0/1 * * * *

定时类:


@Component
public class ScheduledService {
Logger logger= LoggerFactory.getLogger(ScheduledService.class);
    @Scheduled(cron = "${read.timer.parmas}")
    public void readConfigTable(){
        logger.info("*****.read.timer.parmas");
    }
}

启动类:


@SpringBootApplication
@EnableScheduling  //必须
public class DataApplication {
  public static void main(String[] args) {
        springApplication.run(DataApplication.class,args);
    }
}

2、基于代码实现

(1)核心代码


@Component
@EnableScheduling
public class TestScheduledParams implements SchedulinGConfigurer{
    Logger logger= LoggerFactory.getLogger(TestScheduledParams.class);
 
    public static  String DEFAULT_CORN="0/3 * * * * *";
    //##动态传参要给默认值。
    public static String corn=DEFAULT_CORN;
 
    @Override
    public void configureTasks(ScheduledTaskReGIStrar taskRegistrar) {
     
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
               // logger.info("定时任务逻辑");
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                //任务触发,可修改任务的执行周期
                CronTrigger cronTrigger = new CronTrigger(corn);
 
                Date date = cronTrigger.nextExecutionTime(triggerContext);
                return date;
            }
        });
    }
}

(2)其他类或方法动态传参赋值


TestScheduledParams.corn="0/20 * * * * *"

spring boot Scheduled动态配置


package cn.com.suntree.cmp.service;
import cn.com.suntree.cmp.utils.CommonUtil;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import Redis.clients.jedis.Jedis;
import java.util.Date;
@Component
@Log4j2
public class MyDynamicTask implements SchedulingConfigurer {//实现SchedulingConfigurer 接口
    @Autowired
    CommonUtil commonUtil;
    @Autowired
    TaskService taskService;
    private static String cron;
    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {//重写该方法
        scheduledTaskRegistrar.addTriggerTask(doTask(), getTrigger());
    }
    private Runnable doTask() {
        return new Runnable() {
            @Override
            public void run() {
                log.info("-------------------------------执行"+cron);
                taskService.monDay();//真正需要运行的逻辑代码
            }
        };
    }
    private Trigger getTrigger() {
        return new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 触发器
                CronTrigger trigger = new CronTrigger(getCron());
                return trigger.nextExecutionTime(triggerContext);
            }
        };
    }
    public String getCron() {
        Jedis jedis = commonUtil.getJedis();
        String newCron =  jedis.get("cron");//可以改成配置到数据库中
        if (StringUtils.isEmpty(newCron)) {
            jedis.set("cron","0 30 0 ? * Mon");
            return "0 30 0 ? * Mon";
        }
        if (!newCron.equals(cron)) {
            log.info(new StringBuffer("Cron has been changed to:'").append(newCron).append("'. Old cron was:'").append(cron).append("'").toString());
            cron = newCron;
        }
        return cron;
    }
}

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

--结束END--

本文标题: SpringBoot项目中使用@Scheduled读取动态参数

本文链接: https://www.lsjlt.com/news/156017.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot项目中使用@Scheduled读取动态参数
    目录使用@Scheduled读取动态参数1、基于@Scheduled可配置开发2、基于代码实现spring boot Scheduled动态配置使用@Scheduled读取动态参数 ...
    99+
    2022-11-12
  • SpringBoot项目中怎么使用@Scheduled读取动态参数
    本篇内容主要讲解“SpringBoot项目中怎么使用@Scheduled读取动态参数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot项目中怎么使用@Scheduled读取动态参...
    99+
    2023-06-25
  • 使用@Scheduled怎么读取动态配置文件
    使用@Scheduled怎么读取动态配置文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。@Scheduled读取动态配置文件application.yml配置文件得配置信息a...
    99+
    2023-06-15
  • 使用springboot logback动态获取application的配置项
    目录springboot logback动态获取application的配置项logback自身支持以下方式配置因此只能使用spring提供的标签来对此参数进行配置springboo...
    99+
    2022-11-12
  • springboot中项目启动时实现初始化方法加载参数
    目录springboot项目启动,初始化方法加载参数1.@PostConstruct说明2.@PreDestroy说明第一种:注解@PostConstruct第二种:实现Comman...
    99+
    2022-11-12
  • Springboot项目启动时怎么使用命令动态指定环境
    这篇文章主要介绍了Springboot项目启动时怎么使用命令动态指定环境的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Springboot项目启动时怎么使用命令动态指定环境文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-08
  • vue-cli项目中img如何使用require动态获取图片
    目录vue-cli中img使用require动态获取图片vue-cli中图片显示问题1.手动引入2.相对路径3.绝对路径4.数据data中的图片vue-cli中img使用requir...
    99+
    2022-11-13
  • 如何使用函数BAPISDORDER_GETDETAILEDLIST读取S/4HANA中Sales Order行项目数据
    这篇文章主要介绍了如何使用函数BAPISDORDER_GETDETAILEDLIST读取S/4HANA中Sales Order行项目数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
    99+
    2023-06-02
  • 如何在Java SpringBoot项目中配置动态数据源你知道吗
    目录首先需要引入第三方依赖只需要在配置文件中按照如下配置创建如下两个数据库entitymapper.xmlmapper层Service层下面是两个测试方法下面可以来看一下测试结果:在...
    99+
    2022-11-12
  • 如何在Java项目中使用args参数数组
    如何在Java项目中使用args参数数组?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。传递普通参数public class Test { ...
    99+
    2023-06-06
  • 如何在SpringBoot项目中使用Oracle11g数据库
    在SpringBoot项目中使用Oracle11g数据库 具体步骤如下: 1:下载ojdbc6.jar ,随便放个英文目录位置就好 2:命令行下输入下行,注意最后-Dfile 为自己...
    99+
    2022-11-12
  • 如何在SpringBoot项目中使用redis数据库
    今天就跟大家聊聊有关如何在SpringBoot项目中使用redis数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。REmote DIctionary Server(Redis) ...
    99+
    2023-06-07
  • springBoot项目中使用@Value取值出现的问题及解决
    目录使用@Value取值出现的问题1.一般情况下定义一个字段2.但是通常我们会把它用在工具类当中3.工具类最好加上@Component或者其他注解记springBoot使用@Valu...
    99+
    2022-11-13
  • 如何在MyBatis动态SQL项目中使用trim标签
    这期内容当中小编将会给大家带来有关如何在MyBatis动态SQL项目中使用trim标签,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体方法如下:select * from user   <...
    99+
    2023-05-31
    mybatis sql trim
  • 在Spring项目中使用 Mybatis 如何实现动态切换数据源
    这篇文章将为大家详细讲解有关在Spring项目中使用 Mybatis 如何实现动态切换数据源,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现思路是:第一步,实现动态切换数据源:配置两个Da...
    99+
    2023-05-31
    spring mybatis 数据源
  • 如何在springboot项目中使用druid数据库连接池
    如何在springboot项目中使用druid数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apac...
    99+
    2023-06-14
  • Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)
    目录如何运用vue+echarts前后端交互实现动态饼图前言一、环境配置1.1 安装acharts1.2 全局引用二、圆环图前端实现 2.1 先在vue页面添加渲染盒子2....
    99+
    2022-11-12
  • 在Java项目中使用递归如何实现一个文件读取功能
    今天就跟大家聊聊有关在Java项目中使用递归如何实现一个文件读取功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java递归列出目录下全部文件 import java.i...
    99+
    2023-05-31
    java 递归 文件读取
  • vue中动态参数与计算属性的使用方法
    一,动态参数 从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数: <a v-bind:[attributeName]=“url”&...
    99+
    2022-11-12
  • 如何使用ajax实现数据库中随机读取5条数据动态在页面中刷新
    这篇文章主要介绍了如何使用ajax实现数据库中随机读取5条数据动态在页面中刷新,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前台代码:&nb...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作