序言

大家好,我是老马。

平时一直在使用 springboot,却总感觉对于其理解不深入,于是有两个这个系列的整理。

主要是为了系统的学习一下 springboot,残缺补漏一下。主要翻译自官方文档,结合自己的实际使用。

springboot 学习笔记(一)引导类特性详解

springboot 学习笔记(二)外部化配置详解

springboot 教程(三)如何实现配置与环境隔离?

springboot 教程(四)logging 日志配置详解

快速开始

maven 配置

  [xml]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> <version>2.0.0.RELEASE</version> </dependency> </dependencies> <!-- Package as an executable jar --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

任务定义

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class MyJob { private static final Logger log = LoggerFactory.getLogger(MyJob.class); @Scheduled(fixedRate = 5000) public void fiveSecond() { log.info("每5秒执行一次"); } @Scheduled(cron = "0/2 * * * * ?") public void twoSecond() { log.info("每2秒执行一次:"); } }

通过 @Scheduled 注解指定对应的调度策略。

启动

通过注解 @EnableScheduling 启动任务调度。

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; /** * @author binbin.hou * @since 1.0.0 */ @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

日志

测试日志如下:

  [plaintext]
1
2
3
4
5
6
7
8
9
2021-01-20 14:53:48.001 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:53:50.001 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:53:51.966 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每5秒执行一次 2021-01-20 14:53:52.001 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:53:54.001 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:53:56.000 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:53:56.967 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每5秒执行一次 2021-01-20 14:53:58.001 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次: 2021-01-20 14:54:00.002 INFO 19332 --- [pool-1-thread-1] c.g.h.s.learn.schedule.job.MyJob : 每2秒执行一次:

小结

希望本文对你有帮助,如果有其他想法的话,也可以评论区和大家分享哦。

各位极客的点赞收藏转发,是老马持续写作的最大动力!

我是老马,期待与你的下次重逢。

参考资料

https://docs.spring.io/spring-boot/docs/2.4.1/maven-plugin/reference/htmlsingle/#help