diff --git a/lab-28/lab-28-task-quartz-jdbc/pom.xml b/lab-28/lab-28-task-quartz-jdbc/pom.xml
index 767997d7..794bd75c 100644
--- a/lab-28/lab-28-task-quartz-jdbc/pom.xml
+++ b/lab-28/lab-28-task-quartz-jdbc/pom.xml
@@ -13,6 +13,17 @@
lab-28-task-quartz-jdbc
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+ mysql
+ mysql-connector-java
+ 5.1.48
+
+
org.springframework.boot
diff --git a/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java b/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java
new file mode 100644
index 00000000..fc8cbe46
--- /dev/null
+++ b/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java
@@ -0,0 +1,69 @@
+package cn.iocoder.springboot.lab28.task.config;
+
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.util.StringUtils;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class DataSourceConfiguration {
+
+ /**
+ * 创建 user 数据源的配置对象
+ */
+ @Primary
+ @Bean(name = "userDataSourceProperties")
+ @ConfigurationProperties(prefix = "spring.datasource.user") // 读取 spring.datasource.user 配置到 DataSourceProperties 对象
+ public DataSourceProperties userDataSourceProperties() {
+ return new DataSourceProperties();
+ }
+
+ /**
+ * 创建 user 数据源
+ */
+ @Bean(name = "userDataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.user.hikari") // 读取 spring.datasource.user 配置到 HikariDataSource 对象
+ public DataSource userDataSource() {
+ // 获得 DataSourceProperties 对象
+ DataSourceProperties properties = this.userDataSourceProperties();
+ // 创建 HikariDataSource 对象
+ return createHikariDataSource(properties);
+ }
+
+ /**
+ * 创建 quartz 数据源的配置对象
+ */
+ @Bean(name = "quartzDataSourceProperties")
+ @ConfigurationProperties(prefix = "spring.datasource.quartz") // 读取 spring.datasource.quartz 配置到 DataSourceProperties 对象
+ public DataSourceProperties quartzDataSourceProperties() {
+ return new DataSourceProperties();
+ }
+
+ /**
+ * 创建 quartz 数据源
+ */
+ @Bean(name = "quartzDataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.quartz.hikari")
+ public DataSource quartzDataSource() {
+ // 获得 DataSourceProperties 对象
+ DataSourceProperties properties = this.quartzDataSourceProperties();
+ // 创建 HikariDataSource 对象
+ return createHikariDataSource(properties);
+ }
+
+ private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {
+ // 创建 HikariDataSource 对象
+ HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
+ // 设置线程池名
+ if (StringUtils.hasText(properties.getName())) {
+ dataSource.setPoolName(properties.getName());
+ }
+ return dataSource;
+ }
+
+}
diff --git a/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml b/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml
index a8e4bad8..f3b64151 100644
--- a/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml
+++ b/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml
@@ -1,4 +1,30 @@
spring:
+ datasource:
+ user:
+ url: jdbc:mysql://127.0.0.1:3306/lab-28-quartz-jdbc-user?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password:
+ quartz:
+ url: jdbc:mysql://127.0.0.1:3306/lab-28-quartz-jdbc-quartz?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password:
+
+ # Quartz 的配置,对应 QuartzProperties 配置类
quartz:
+ scheduler-name: clusteredScheduler # Scheduler 名字。默认为 schedulerName
+ job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
auto-startup: true # Quartz 是否自动启动
startup-delay: 0 # 延迟 N 秒启动
+ wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
+ overwrite-existing-jobs: false # 是否覆盖已有 Job 的配置
+ properties: # 添加 Quartz Scheduler 附加属性,更多可以看 http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 文档
+ org:
+ quartz:
+ threadPool:
+ threadCount: 25 # 线程池大小。默认为 10 。
+ threadPriority: 5 # 线程优先级
+ class: org.quartz.simpl.SimpleThreadPool # 线程池类型
+ jdbc: # 使用 JDBC 的 JobStore 的时候,JDBC 的配置
+ initialize-schema: never # TODO
diff --git a/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml b/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml
index 1df68c68..0bdcb866 100644
--- a/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml
+++ b/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml
@@ -10,7 +10,7 @@ spring:
org:
quartz:
threadPool:
- threadCount: 25 # 线程数
+ threadCount: 25 # 线程池大小。默认为 10 。
threadPriority: 5 # 线程优先级
class: org.quartz.simpl.SimpleThreadPool # 线程池类型
# jdbc: # 这里暂时不说明,使用 JDBC 的 JobStore 的时候,才需要配置