目录

1.背景

2.简介

3.代码实现

3.1.主类

3.2.配置类

3.3.配置示例


1.背景

定时任务注解@Scheduled(cron="0 0/10 * * * ?")大家都会用,但是一旦需要配置时间,这种方式就不可行了,本文介绍了可以配置的方式。

2.简介

本文采用SchedulingConfigurer从配置中读取定时任务信息,装载到定时任务中。

任务执行时进行SpringBean方式反射加载执行。

3.代码实现

3.1.主类

/*** 定时任务*/
@Configuration
@Slf4j
public class ScheduledTask implements SchedulingConfigurer {@AutowiredScheduledConfig scheduledConfig;/*** 转换首字母小写** @param str* @return*/public static String lowerFirstCapse(String str) {char[] chars = str.toCharArray();chars[0] += 32;return String.valueOf(chars);}@Overridepublic void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {scheduledConfig.getItemList().forEach(scheduledConfigItem -> {Runnable runnable=new Runnable() {@Overridepublic void run() {Class<?> clazz;try {clazz = Class.forName(scheduledConfigItem.getClassName());String className = lowerFirstCapse(clazz.getSimpleName());Object bean = (Object) SpringUtil.getBean(className);Method method = ReflectionUtils.findMethod(bean.getClass(), scheduledConfigItem.getMethod());log.info("任务{}已启动",scheduledConfigItem.getName());ReflectionUtils.invokeMethod(method, bean);log.info("任务{}已结束",scheduledConfigItem.getName());} catch (ClassNotFoundException e) {e.printStackTrace();}}};scheduledTaskRegistrar.addCronTask(runnable,scheduledConfigItem.getCron());log.info("任务{}已加载",scheduledConfigItem.getName());});}
}

3.2.配置类

@Configuration
@ConfigurationProperties(prefix = "scheduled-config")
@Data
public class ScheduledConfig {private List<ScheduledConfigItem> itemList;
}@Data
public class ScheduledConfigItem {private String name;private String cron;private String className;private String method;
}

3.3.配置示例

scheduled-config:itemList:- name: searchDataReloadcron: 0 32 14 * * ?className: com.whq.myapp.service.SearchServicemethod: dataReload

Spring Boot SchedulingConfigurer定时执行任务(配置式反射调用)相关推荐

  1. spring boot做定时任务管理模块。

    spring boot做定时任务管理模块. 我做的定时器管理界面是下面这样的. 新增页面. 列表页面. 下面来说说做定时任务管理模块的步骤. 1.在pom.xml中配maven库. org.quart ...

  2. Spring Boot 面试杀手锏:自动配置原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观望态度外,如 ...

  3. Spring Boot应用的后台运行配置

    酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...

  4. Spring Boot 整合携程Apollo 配置中心

    作者:AaronSimon blog.csdn.net/AaronSimon/article/details/83657612 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理 ...

  5. 如何把Spring Boot 项目变成一个XML配置的Spring项目

    现在大家都追赶新的技术潮流,我来逆行一下. 其实Spring Boot 隐藏了大量的细节,有大量的默认配置,其实通过xml配置的方式也可以达到和Spring Boot一样的效果. Profile 在S ...

  6. [Spring Boot]Druid datasource整合及配置

    [Spring Boot]Druid datasource整合及配置 创建Spring Boot项目 这里使用默认配置创建一个空项目 demo-druid 用作演示,可跳过这一段: 只勾选基本的Spr ...

  7. 关于Spring Boot WebSocket整合以及nginx配置详解

    这篇文章主要给大家介绍了关于Spring Boot WebSocket整合以及nginx配置的相关资料,文中通过示例代码给大家介绍的非常详细,相信对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  8. Spring Boot中的一些常用配置介绍!

    这篇教程将为你介绍Spring Boot 中的一些常用配置,比如:自定义 Banner.配置日志.关闭特定的自动配置等. 自定义Banner 在 Spring Boot 启动的时候会有一个默认的启动图 ...

  9. 13、Spring Boot 2.x 多数据源配置

    1.13 Spring Boot 2.x 多数据源配置 完整源码: Spring-Boot-Demos 转载于:https://www.cnblogs.com/Grand-Jon/p/9999779. ...

最新文章

  1. 升级SharePoint数据库到SQL Server 2005的一点心得
  2. 腾讯云Centos升级python2到python3
  3. python 跳出for循环_python中如何退出for循环
  4. VS2005中ReportViewer 本地模式下报表呈现 入门示例
  5. 叮咚买菜大裁员?回应:消息不实 目前业务都在正常运转
  6. 东京奥运出租车超预算想找滴滴接盘被拒 网友:真当人傻吗?
  7. Linux命令解释之sed
  8. tensorflow学习笔记(三十四):Saver(保存与加载模型)
  9. java 中public 类
  10. Mybatis笔记 - SQL标签方法
  11. .netcore 2.0 mysql_MySQL数据库之.Net Core 2.0 使用EF连接MySQL数据库
  12. 支付服务整合支付宝沙箱
  13. 设计模式学习笔记(十三)组合模式及其在树形结构中的应用
  14. 浅谈极值点偏移(化为单变量以及ALG不等式)
  15. 【Codeforces】 B. Make it Divisible by 25
  16. 刷脸支付代理收益盈利模式
  17. 博弈论与信息经济学-重复博弈
  18. EBS MO_GLOBAL包的分析
  19. 阿里最新丰碑:国内第一本凤凰架构,全面构建可靠大型分布式系统
  20. 开源WEBGIS(五)WEBGIS五剑客之GIS服务

热门文章

  1. 工作297:shift+$形成元
  2. 前端学习(2820):全局文件tabber字段
  3. 第五十八期:AI艺术日渐繁荣,未来何去何从?
  4. java学习(58):私有内部类后访问
  5. 实例42:python
  6. 论文阅读(2)--Picking Deep Filter Responses for Fine-grained Image Recognition
  7. mysql主要的收获_MySQL性能测试大总结
  8. 记一次MySQL手工注入
  9. android开发之 SQLite(数据库)
  10. BZOJ 1491: [NOI2007]社交网络( floyd )