相关文章推荐
礼貌的鸡蛋  ·  [WinError 10061] ...·  2 年前    · 
怕老婆的勺子  ·  java - What is the ...·  3 年前    · 

前几天碰到一个问题,关于定时任务的,在这分享给大家!

@Scheduled

定时任务可以有很多写法,我觉得最简单的就是用注解的方式,如果你的项目用的是spring boot框架,就可以三步完成:

一,添加@EnableScheduling注解到入口类声明上面

@SpringBootApplication @EnableScheduling public class Application { public static void main(String args[]) { SpringApplication.run(Application.class, args);

二,创建类,添加@Component注解

@Component
public class Task {

三,创建方法,添加@Scheduled注解

@Scheduled(cron = "${task.cron.tradeData}")
public void getTradeData() {

(这里cron是从配置文件取值,如下)

task:
   cron:
     tradeData: 0 1 0 * * ?

看似简单,却隐藏着很多坑,一不小心就掉进去了,比如:

(1)此方法不能有参数

(2)此方法不能有返回值

(3)此类中不能包含其他带任何注解的方法(发现新大陆)

违反任何一条,定时都不会生效!

小心别入坑哦!!!!

  两年没有写博客了,有点生疏,现在看之前写的博客真是惭愧,什么鬼……(都不要看了)  前几天碰到一个问题,关于定时任务的,在这分享给大家! @Scheduled  定时任务可以有很多写法,我觉得最简单的就是用注解的方式,如果你的项目用的是spring boot框架,就可以三步完成:一,添加@EnableScheduling注解到入口类声明上面/** * 启动 * */@SpringBoo... 启动类里面/使用定时任务所在的类中使用@EnableScheduling 注解开启功能,自动扫描 cron表达式写法不对 正常写法:@Scheduled(cron="*/10 * * * * ?") 代表10s执行一次,每个对应的是秒 分 时 天 如果是想每天0:30执行一次,那就是:
【代码】@Scheduled 定时任务不执行。1. 启动类上加 @EnableScheduling 注解 2. 定时任务类上加@Component 3. 定时方法上加@Scheduled原因是:@Scheduled注解会在默认情况下以单线程的方式执行定时任务。 这个“单线程”指两个方面: 1. 如果一个定时任务执行时间大于其任务间隔时间,那么下一次将会等待上一次执行结束后再继续执行。 2. 如果多个定时任务在同一时刻执行,任务会依次执行。
@Scheduled定时任务 不生效原因及解决办法1.问题描述2.问题复现3.问题解决 1.问题描述 在我们系统设计过程中,需要用到定时器,这时候我们用到了spring的Scheduled。系统逻辑为在每天的23:00:00( @Scheduled(cron = “0 0 23 * * ?”) )定时检测系统数据,并进行备份。用到的是cron表达式,自己测试定时器都是正常运行,可是一到测试那边定时器起作用,到了时间点一点变化都没有。 给大家安利一个在线网站,用于定时任务配置https://cron.qqe2
公司UAT测试环境部署的定时任务怎么都不执行,而本地测试是没问题可以执行,后来问同事看下服务器时间date +"%Y-%m-%d %T",果然服务器时间和真实时间有偏差导致还没有执行。 最终原因 还是自己疏忽 自己的类名全称 是com.xxx.xxx.task.ScheduledTask 但是在另外一个jar包里面 同样有这个引用的类 根据类加载的双亲委派机制 我这个子jar包里面的类不会被加载进去,可怕的是它没有报错。 修改类名为com
spring boot @Scheduled未生效原因以及相关坑 在spring boot中,支持多种定时执行模式(cron, fixRate, fixDelay),在Application或者其他Autoconfig上增加@EnableScheduling注解开启。 然后在指定方法增加@Scheduled注解,如下: @Scheduled(cron="0 0 0/1 *...
@Scheduled是Spring框架中用于实现定时任务的注解,常用于后台定时任务、定时数据备份等场景。而有时候我们可能需要对定时任务的cron表达式动态修改,比如需要根据业务需求动态改变定时任务的执行时间,在这种情况下,@Scheduled的cron参数就能够派上用场了。 动态修改@Scheduled注解的cron参数需要使用Java反射机制,具体步骤如下: 1.获取定时任务所在类的Class对象; 2.通过Class对象获取注解方法; 3.获取注解方法上的cron参数; 4.通过反射修改cron参数值; 5.完成cron参数值的动态修改。 需要注意的是,cron参数的修改只会在下一次定时任务执行时生效,不会影响已经在执行的定时任务。 总体而言,动态修改@Scheduled注解的cron参数是一项非常实用的功能,它让我们能够更灵活地控制定时任务的执行时间,提高系统的可维护性和稳定性。
此类中不能包含其他带任何注解的方法 是什么意思在类前面声明的@Autowire算吗 //操作架次计划 private final SortiePlanService sortiePlanService; //发送计划变更消息 private final PlanProduct planProduct; //发送计划变更信息头设置 private final PlanHeaderConfig planHeaderConfig;