diff --git a/demo-task/demo-task-spring/.gitignore b/demo-task/demo-task-spring/.gitignore deleted file mode 100644 index 82eca33..0000000 --- a/demo-task/demo-task-spring/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -/target/ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/build/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ \ No newline at end of file diff --git a/demo-task/demo-task-spring/README.md b/demo-task/demo-task-spring/README.md index c56646e..df68d07 100644 --- a/demo-task/demo-task-spring/README.md +++ b/demo-task/demo-task-spring/README.md @@ -1,77 +1,38 @@ # spring-boot-demo-task -> 此 demo 主要演示了 Spring Boot 如何快速实现定时任务。 +> 此 demo 主要演示了 Spring Boot 如何通过 Spring Task 快速实现定时任务。 -## pom.xml +## 1.开发步骤 + +### 1.1.添加依赖 ```xml - - - 4.0.0 - - spring-boot-demo-task - 1.0.0-SNAPSHOT - jar - - spring-boot-demo-task - Demo project for Spring Boot - - - com.xkcoding - spring-boot-demo - 1.0.0-SNAPSHOT - - - - UTF-8 - UTF-8 - 1.8 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.apache.commons - commons-lang3 - - - - org.projectlombok - lombok - true - - - - cn.hutool - hutool-all - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - spring-boot-demo-task - - - org.springframework.boot - spring-boot-maven-plugin - - - - - + + + com.xkcoding + common-tools + + + + org.springframework.boot + spring-boot-starter-web + + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-starter-test + test + + ``` -## TaskConfig.java +### 1.2.SpringTask的自动装配 > 此处等同于在配置文件配置 > @@ -81,18 +42,9 @@ > ``` ```java -/** - *

- * 定时任务配置,配置线程池,使用不同线程执行任务,提升效率 - *

- * - * @author yangkai.shen - * @date Created in 2018-11-22 19:02 - */ -@Configuration @EnableScheduling -@ComponentScan(basePackages = {"com.xkcoding.task.job"}) -public class TaskConfig implements SchedulingConfigurer { +@Configuration +public class TaskAutoConfiguration implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); @@ -106,25 +58,33 @@ public class TaskConfig implements SchedulingConfigurer { */ @Bean public Executor taskExecutor() { - return new ScheduledThreadPoolExecutor(20, new BasicThreadFactory.Builder().namingPattern("Job-Thread-%d").build()); + return new ScheduledThreadPoolExecutor(20, new NamedThreadFactory("Job-Thread-", false)); } } ``` -## TaskJob.java +### 1.3.配置文件 + +```yaml +server: + port: 8080 + servlet: + context-path: /demo +# 下面的配置等同于 TaskConfig +#spring: +# task: +# scheduling: +# pool: +# size: 20 +# thread-name-prefix: Job-Thread- +``` + +### 1.4.创建定时任务 ```java -/** - *

- * 定时任务 - *

- * - * @author yangkai.shen - * @date Created in 2018-11-22 19:09 - */ -@Component @Slf4j -public class TaskJob { +@Component +public class MockSpringTask { /** * 按照标准时间来算,每隔 10s 执行一次 @@ -154,22 +114,11 @@ public class TaskJob { } ``` -## application.yml +## 2.测试 -```yaml -server: - port: 8080 - servlet: - context-path: /demo -# 下面的配置等同于 TaskConfig -#spring: -# task: -# scheduling: -# pool: -# size: 20 -# thread-name-prefix: Job-Thread- -``` +启动 `SpringTaskApplication` 观察控制台日志 + +## 3.参考 -## 参考 +- [Spring Boot 官方文档之定时任务](https://docs.spring.io/spring-boot/docs/3.0.0-M4/reference/htmlsingle/#features.task-execution-and-scheduling) -- Spring Boot官方文档:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-features-task-execution-scheduling diff --git a/demo-task/demo-task-spring/pom.xml b/demo-task/demo-task-spring/pom.xml index b0abd02..5fc67b3 100644 --- a/demo-task/demo-task-spring/pom.xml +++ b/demo-task/demo-task-spring/pom.xml @@ -1,6 +1,12 @@ + + com.xkcoding + demo-task + 1.0.0-SNAPSHOT + + 4.0.0 demo-task-spring @@ -10,27 +16,19 @@ demo-task-spring Demo project for Spring Boot - - com.xkcoding - spring-boot-demo - 1.0.0-SNAPSHOT - - - UTF-8 - UTF-8 - 1.8 + 17 - org.springframework.boot - spring-boot-starter-web + com.xkcoding + common-tools - org.apache.commons - commons-lang3 + org.springframework.boot + spring-boot-starter-web @@ -40,11 +38,6 @@ - cn.hutool - hutool-all - - - org.springframework.boot spring-boot-starter-test test diff --git a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringBootDemoTaskApplication.java b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringTaskApplication.java similarity index 73% rename from demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringBootDemoTaskApplication.java rename to demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringTaskApplication.java index 8f75a00..afc5aa6 100644 --- a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringBootDemoTaskApplication.java +++ b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/SpringTaskApplication.java @@ -12,9 +12,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @date Created in 2018-11-22 19:00 */ @SpringBootApplication -public class SpringBootDemoTaskApplication { +public class SpringTaskApplication { public static void main(String[] args) { - SpringApplication.run(SpringBootDemoTaskApplication.class, args); + SpringApplication.run(SpringTaskApplication.class, args); } } diff --git a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/config/TaskConfig.java b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/configuration/TaskAutoConfiguration.java similarity index 74% rename from demo-task/demo-task-spring/src/main/java/com/xkcoding/task/config/TaskConfig.java rename to demo-task/demo-task-spring/src/main/java/com/xkcoding/task/configuration/TaskAutoConfiguration.java index 9a00e9e..7f17fd0 100644 --- a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/config/TaskConfig.java +++ b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/configuration/TaskAutoConfiguration.java @@ -1,8 +1,7 @@ -package com.xkcoding.task.config; +package com.xkcoding.task.configuration; -import org.apache.commons.lang3.concurrent.BasicThreadFactory; +import cn.hutool.core.thread.NamedThreadFactory; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; @@ -19,10 +18,9 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; * @author yangkai.shen * @date Created in 2018-11-22 19:02 */ -@Configuration @EnableScheduling -@ComponentScan(basePackages = {"com.xkcoding.task.job"}) -public class TaskConfig implements SchedulingConfigurer { +@Configuration +public class TaskAutoConfiguration implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); @@ -36,6 +34,6 @@ public class TaskConfig implements SchedulingConfigurer { */ @Bean public Executor taskExecutor() { - return new ScheduledThreadPoolExecutor(20, new BasicThreadFactory.Builder().namingPattern("Job-Thread-%d").build()); + return new ScheduledThreadPoolExecutor(20, new NamedThreadFactory("Job-Thread-", false)); } } diff --git a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/TaskJob.java b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/MockSpringTask.java similarity index 97% rename from demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/TaskJob.java rename to demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/MockSpringTask.java index 94965e1..ab97dd3 100644 --- a/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/TaskJob.java +++ b/demo-task/demo-task-spring/src/main/java/com/xkcoding/task/job/MockSpringTask.java @@ -15,9 +15,9 @@ import java.util.Date; * @author yangkai.shen * @date Created in 2018-11-22 19:09 */ -@Component @Slf4j -public class TaskJob { +@Component +public class MockSpringTask { /** * 按照标准时间来算,每隔 10s 执行一次 diff --git a/demo-task/demo-task-spring/src/main/resources/application.yml b/demo-task/demo-task-spring/src/main/resources/application.yml index 5105cc3..6778e2e 100644 --- a/demo-task/demo-task-spring/src/main/resources/application.yml +++ b/demo-task/demo-task-spring/src/main/resources/application.yml @@ -8,4 +8,4 @@ server: # scheduling: # pool: # size: 20 -# thread-name-prefix: Job-Thread- \ No newline at end of file +# thread-name-prefix: Job-Thread- diff --git a/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringBootDemoTaskApplicationTests.java b/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringBootDemoTaskApplicationTests.java deleted file mode 100644 index e4e281d..0000000 --- a/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringBootDemoTaskApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.xkcoding.task; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class SpringBootDemoTaskApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringTaskApplicationTests.java b/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringTaskApplicationTests.java new file mode 100644 index 0000000..761e9d3 --- /dev/null +++ b/demo-task/demo-task-spring/src/test/java/com/xkcoding/task/SpringTaskApplicationTests.java @@ -0,0 +1,13 @@ +package com.xkcoding.task; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class SpringTaskApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/demo-task/pom.xml b/demo-task/pom.xml index 02843d2..262eea6 100644 --- a/demo-task/pom.xml +++ b/demo-task/pom.xml @@ -18,4 +18,8 @@ 17 + + demo-task-spring + +