spring boot 中使用定时器

时间:2022-06-02 23:35:18

简单两步,实现在spring boot中配置和使用定时器:

1、在入口类中加入@EnableScheduling注解:

@SpringBootApplication
@EnableScheduling
public class MySpringBootApplication {
private static Logger logger = LoggerFactory.getLogger(MySpringBootApplication.class);

public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
logger.info("My Spring Boot Application Started");
}
}

2、创建定时器类,类中的方法注解了@Scheduled就是一个定时器:

@Component
public class Scheduler {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Scheduled(cron="0 0/1 * * * ?") //每分钟执行一次
public void statusCheck() {
logger.info("每分钟执行一次。开始……");
//statusTask.healthCheck();
logger.info("每分钟执行一次。结束。");
}

@Scheduled(fixedRate=20000)
public void testTasks() {
logger.info("每20秒执行一次。开始……");
//statusTask.healthCheck();
logger.info("每20秒执行一次。结束。");
}
}


启动项目,验证结果:

2016-07-19 14:51:57,049:INFO pool-2-thread-1 (Scheduler.java:28) - 每20秒执行一次。开始……
2016-07-19 14:51:57,049:INFO pool-2-thread-1 (Scheduler.java:31) - 每20秒执行一次。结束。
2016-07-19 14:52:00,002:INFO pool-2-thread-1 (Scheduler.java:19) - 每分钟执行一次。开始……
2016-07-19 14:52:00,002:INFO pool-2-thread-1 (Scheduler.java:22) - 每分钟执行一次。结束。
2016-07-19 14:52:17,049:INFO pool-2-thread-1 (Scheduler.java:28) - 每20秒执行一次。开始……
2016-07-19 14:52:17,049:INFO pool-2-thread-1 (Scheduler.java:31) - 每20秒执行一次。结束。
2016-07-19 14:52:37,049:INFO pool-2-thread-1 (Scheduler.java:28) - 每20秒执行一次。开始……
2016-07-19 14:52:37,049:INFO pool-2-thread-1 (Scheduler.java:31) - 每20秒执行一次。结束。
2016-07-19 14:52:57,049:INFO pool-2-thread-1 (Scheduler.java:28) - 每20秒执行一次。开始……
2016-07-19 14:52:57,049:INFO pool-2-thread-1 (Scheduler.java:31) - 每20秒执行一次。结束。
2016-07-19 14:53:00,002:INFO pool-2-thread-1 (Scheduler.java:19) - 每分钟执行一次。开始……
2016-07-19 14:53:00,002:INFO pool-2-thread-1 (Scheduler.java:22) - 每分钟执行一次。结束。
2016-07-19 14:53:17,049:INFO pool-2-thread-1 (Scheduler.java:28) - 每20秒执行一次。开始……
2016-07-19 14:53:17,049:INFO pool-2-thread-1 (Scheduler.java:31) - 每20秒执行一次。结束。

关于@Scheduled注解中参数的使用,以及cron的定义,请参考: http://blog.csdn.net/ClementAD/article/details/42042111

源代码参考:https://github.com/xujijun/my-spring-boot