From 378de684e1c1b5b3e56b5ab5520834d8e9fdbc8b Mon Sep 17 00:00:00 2001
From: liuchen864 <23082234@qq.com>
Date: Tue, 26 Sep 2023 09:35:10 +0800
Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90shardingSphere,=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
win-dependencies/pom.xml | 8 +-
.../win-spring-boot-starter-mybatis/pom.xml | 4 +
.../WinDataSourceAutoConfiguration.java | 78 ++++++++-
.../datasource/core/enums/DataSourceEnum.java | 8 +-
.../com/win/server/WinServerApplication.java | 23 +--
.../src/main/resources/application-dev.yaml | 97 ++++++-----
.../src/main/resources/application-druid.yml | 47 ++++++
.../src/main/resources/application-prod.yaml | 96 ++++++-----
.../src/main/resources/application-test.yaml | 96 ++++++-----
.../src/main/resources/application.yaml | 8 +-
.../src/main/resources/logback-spring.xml | 158 +++++++++++-------
11 files changed, 409 insertions(+), 214 deletions(-)
create mode 100644 win-server/src/main/resources/application-druid.yml
diff --git a/win-dependencies/pom.xml b/win-dependencies/pom.xml
index b3089ce5..4743ce1f 100644
--- a/win-dependencies/pom.xml
+++ b/win-dependencies/pom.xml
@@ -26,8 +26,9 @@
1.2.19
3.5.3.2
3.5.3.2
- 3.6.1
+ 3.3.2
1.4.6
+ 5.1.1
3.18.0
8.1.2.141
@@ -216,6 +217,11 @@
dynamic-datasource-spring-boot-starter
${dynamic-datasource.version}
+
+ org.apache.shardingsphere
+ shardingsphere-jdbc-core-spring-boot-starter
+ ${shardingsphere.version}
+
com.github.yulichang
mybatis-plus-join-boot-starter
diff --git a/win-framework/win-spring-boot-starter-mybatis/pom.xml b/win-framework/win-spring-boot-starter-mybatis/pom.xml
index e3a65a4c..13307214 100644
--- a/win-framework/win-spring-boot-starter-mybatis/pom.xml
+++ b/win-framework/win-spring-boot-starter-mybatis/pom.xml
@@ -61,6 +61,10 @@
com.baomidou
dynamic-datasource-spring-boot-starter
+
+ org.apache.shardingsphere
+ shardingsphere-jdbc-core-spring-boot-starter
+
com.github.yulichang
diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java
index 2f444b5b..68dfe416 100644
--- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java
+++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java
@@ -1,14 +1,30 @@
package com.win.framework.datasource.config;
-import com.win.framework.datasource.core.filter.DruidAdRemoveFilter;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.provider.AbstractDataSourceProvider;
+import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.win.framework.datasource.core.enums.DataSourceEnum;
+import com.win.framework.datasource.core.filter.DruidAdRemoveFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement;
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* 数据库配置类
*
@@ -16,9 +32,67 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
*/
@AutoConfiguration
@EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理
-@EnableConfigurationProperties(DruidStatProperties.class)
+@EnableConfigurationProperties({DruidStatProperties.class})
+@AutoConfigureBefore({DynamicDataSourceAutoConfiguration.class, SpringBootConfiguration.class})
public class WinDataSourceAutoConfiguration {
+ /**
+ * 动态数据源配置项
+ * 这里会根据yml文件的配置自动加载配置,将多个数据源信息放到datasourceMap中
+ */
+ @Autowired
+ private DynamicDataSourceProperties properties;
+
+ /**
+ * 使用shardingSphereDataSource 自动装载的 DataSource
+ * 5.1.1版本自动装载的shardingSphereDataSource beanName="shardingSphereDataSource"
+ * 要加@Lazy
+ */
+ @Lazy
+ @Autowired
+ private DataSource shardingSphereDataSource;
+ @Autowired
+ private MybatisPlusInterceptor mybatisPlusInterceptor;
+
+ /**
+ * 创建动态数据源,只创建sharding
+ * @return
+ */
+ @Bean
+ public DynamicDataSourceProvider dynamicDataSourceProvider() {
+ //Map datasourceMap = properties.getDatasource();
+ return new AbstractDataSourceProvider() {
+ @Override
+ public Map loadDataSources() {
+ //Map dataSourceMap = createDataSourceMap(datasourceMap);
+ Map dataSourceMap = new HashMap<>();
+ // 将 shardingjdbc 管理的数据源也交给动态数据源管理
+ dataSourceMap.put(DataSourceEnum.SHARDING, shardingSphereDataSource);
+ return dataSourceMap;
+ }
+ };
+ }
+
+ /**
+ * 将动态数据源设置为首选的
+ * 当spring存在多个数据源时, 自动注入的是首选的对象
+ * 设置为主要的数据源之后,就可以支持shardingjdbc原生的配置方式了
+ *
+ * @return
+ */
+ @Primary
+ @Bean
+ public DataSource dataSource(DynamicDataSourceProvider dynamicDataSourceProvider) {
+ DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource();
+ dataSource.setPrimary(DataSourceEnum.SHARDING);//设sharding为主库
+ dataSource.setStrict(properties.getStrict());
+ dataSource.setStrategy(properties.getStrategy());
+ dataSource.setProvider(dynamicDataSourceProvider);
+ dataSource.setP6spy(properties.getP6spy());
+ dataSource.setSeata(properties.getSeata());
+ return dataSource;
+ }
+
/**
* 创建 DruidAdRemoveFilter 过滤器,过滤 common.js 的广告
*/
diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/enums/DataSourceEnum.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/enums/DataSourceEnum.java
index eb1aa755..135ee4c0 100644
--- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/enums/DataSourceEnum.java
+++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/enums/DataSourceEnum.java
@@ -4,7 +4,6 @@ package com.win.framework.datasource.core.enums;
* 对应于多数据源中不同数据源配置
*
* 通过在方法上,使用 {@link com.baomidou.dynamic.datasource.annotation.DS} 注解,设置使用的数据源。
- * 注意,默认是 {@link #MASTER} 数据源
*
* 对应官方文档为 http://dynamic-datasource.com/guide/customize/Annotation.html
*/
@@ -13,10 +12,11 @@ public interface DataSourceEnum {
/**
* 主库,推荐使用 {@link com.baomidou.dynamic.datasource.annotation.Master} 注解
*/
- String MASTER = "master";
+ String SHARDING = "sharding";
+
/**
- * 从库,推荐使用 {@link com.baomidou.dynamic.datasource.annotation.Slave} 注解
+ * 主库,推荐使用 {@link com.baomidou.dynamic.datasource.annotation.Master} 注解
*/
- String SLAVE = "slave";
+ String MASTER = "master";
}
diff --git a/win-server/src/main/java/com/win/server/WinServerApplication.java b/win-server/src/main/java/com/win/server/WinServerApplication.java
index 111aa031..00d22c08 100644
--- a/win-server/src/main/java/com/win/server/WinServerApplication.java
+++ b/win-server/src/main/java/com/win/server/WinServerApplication.java
@@ -1,34 +1,25 @@
package com.win.server;
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* 项目的启动类
*
- * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- *
* @author 闻荫源码
*/
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${win.info.base-package}
-@SpringBootApplication(scanBasePackages = {"${win.info.base-package}.server", "${win.info.base-package}.module"})
+@SpringBootApplication(
+ scanBasePackages = {"${win.info.base-package}.server", "${win.info.base-package}.module"},
+ exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class}
+)
public class WinServerApplication {
public static void main(String[] args) {
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
-
SpringApplication.run(WinServerApplication.class, args);
-// new SpringApplicationBuilder(WinServerApplication.class)
-// .applicationStartup(new BufferingApplicationStartup(20480))
-// .run(args);
-
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
- // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
+ // new SpringApplicationBuilder(WinServerApplication.class).applicationStartup(new BufferingApplicationStartup(20480)).run(args);
}
}
diff --git a/win-server/src/main/resources/application-dev.yaml b/win-server/src/main/resources/application-dev.yaml
index d378b0dd..281c2cd0 100644
--- a/win-server/src/main/resources/application-dev.yaml
+++ b/win-server/src/main/resources/application-dev.yaml
@@ -9,51 +9,61 @@ spring:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
- org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration # 排除积木报表带来的 MongoDB 的自动配置
+ shardingsphere:
+ mode:
+ type: Memory
+ # 属性配置
+ props:
+ sql.show: true
+ ## 数据源配置
+ datasource:
+ names: master,slave0,slave1
+ # 主数据源
+ master:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave0:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave1:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读写分离类型,如: Static,Dynamic
+ rules:
+ readwrite-splitting:
+ data-sources:
+ myds:
+ type: Static
+ props:
+ write-data-source-name: master
+ read-data-source-names: slave0,slave1
+ load-balancer-name: alg_round
+ load-balancers:
+ alg_round:
+ type: ROUND_ROBIN
+ # 不创建此数据源,用于生成代码
datasource:
- druid: # Druid 【监控】相关的全局配置
- web-stat-filter:
- enabled: true
- stat-view-servlet:
- enabled: true
- allow: # 设置白名单,不填则允许所有访问
- url-pattern: /druid/*
- login-username: # 控制台管理用户名和密码
- login-password:
- filter:
- stat:
- enabled: true
- log-slow-sql: true # 慢 SQL 记录
- slow-sql-millis: 100
- merge-sql: true
- wall:
- config:
- multi-statement-allow: true
- dynamic: # 多数据源配置
- druid: # Druid 【连接池】相关的全局配置
- initial-size: 5 # 初始连接数
- min-idle: 10 # 最小连接池数量
- max-active: 20 # 最大连接池数量
- max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
- time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
- min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
- max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
- validation-query: SELECT 1 # 配置检测连接是否有效
- test-while-idle: true
- test-on-borrow: false
- test-on-return: false
+ dynamic:
+ strict: true
primary: master
datasource:
master:
- name: sfms
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
- slave: # 模拟从库,可根据自己需要修改
- name: sfms
- lazy: true # 开启懒加载,保证启动速度
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
+ type: ${spring.shardingsphere.datasource.master.type}
+ driver-class-name: ${spring.shardingsphere.datasource.master.driverClassName}
+ url: ${spring.shardingsphere.datasource.master.url}
+ username: ${spring.shardingsphere.datasource.master.username}
+ password: ${spring.shardingsphere.datasource.master.password}
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
@@ -135,7 +145,10 @@ spring:
# 日志文件配置
logging:
file:
- name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+ path: logs
+ level:
+ com.win: debug
+ org.springframework: warn
--- #################### 微信公众号相关配置 ####################
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
diff --git a/win-server/src/main/resources/application-druid.yml b/win-server/src/main/resources/application-druid.yml
new file mode 100644
index 00000000..d6479cca
--- /dev/null
+++ b/win-server/src/main/resources/application-druid.yml
@@ -0,0 +1,47 @@
+# 数据源配置
+spring:
+ datasource:
+ druid:
+ # 初始连接数
+ initialSize: 20
+ # 最小连接池数量
+ minIdle: 20
+ # 最大连接池数量
+ maxActive: 200
+ # 配置获取连接等待超时的时间
+ maxWait: 60000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ timeBetweenEvictionRunsMillis: 60000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ minEvictableIdleTimeMillis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ maxEvictableIdleTimeMillis: 900000
+ # 配置检测连接是否有效
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: false
+ url-pattern: /* # 过滤所有url
+ exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # 排除一些不必要的url
+ session-stat-enable: true # 开启session统计功能
+ session-stat-max-count: 1000 # session的最大个数,默认100
+ statViewServlet:
+ enabled: true
+ # 设置白名单,不填则允许所有访问
+ allow:
+ url-pattern: /druid/*
+ # 控制台管理用户名和密码
+ login-username: win
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 慢SQL记录
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
\ No newline at end of file
diff --git a/win-server/src/main/resources/application-prod.yaml b/win-server/src/main/resources/application-prod.yaml
index d378b0dd..1850e00e 100644
--- a/win-server/src/main/resources/application-prod.yaml
+++ b/win-server/src/main/resources/application-prod.yaml
@@ -9,51 +9,60 @@ spring:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
- org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration # 排除积木报表带来的 MongoDB 的自动配置
+ shardingsphere:
+ mode:
+ type: Memory
+ # 属性配置
+ props:
+ sql.show: true
+ ## 数据源配置
+ datasource:
+ names: master,slave0,slave1
+ # 主数据源
+ master:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave0:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave1:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读写分离类型,如: Static,Dynamic
+ rules:
+ readwrite-splitting:
+ data-sources:
+ myds:
+ type: Static
+ props:
+ write-data-source-name: master
+ read-data-source-names: slave0,slave1
+ load-balancer-name: alg_round
+ load-balancers:
+ alg_round:
+ type: ROUND_ROBIN
datasource:
- druid: # Druid 【监控】相关的全局配置
- web-stat-filter:
- enabled: true
- stat-view-servlet:
- enabled: true
- allow: # 设置白名单,不填则允许所有访问
- url-pattern: /druid/*
- login-username: # 控制台管理用户名和密码
- login-password:
- filter:
- stat:
- enabled: true
- log-slow-sql: true # 慢 SQL 记录
- slow-sql-millis: 100
- merge-sql: true
- wall:
- config:
- multi-statement-allow: true
- dynamic: # 多数据源配置
- druid: # Druid 【连接池】相关的全局配置
- initial-size: 5 # 初始连接数
- min-idle: 10 # 最小连接池数量
- max-active: 20 # 最大连接池数量
- max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
- time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
- min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
- max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
- validation-query: SELECT 1 # 配置检测连接是否有效
- test-while-idle: true
- test-on-borrow: false
- test-on-return: false
+ dynamic:
+ strict: true
primary: master
datasource:
master:
- name: sfms
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
- slave: # 模拟从库,可根据自己需要修改
- name: sfms
- lazy: true # 开启懒加载,保证启动速度
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
+ type: ${spring.shardingsphere.datasource.master.type}
+ driver-class-name: ${spring.shardingsphere.datasource.master.driverClassName}
+ url: ${spring.shardingsphere.datasource.master.url}
+ username: ${spring.shardingsphere.datasource.master.username}
+ password: ${spring.shardingsphere.datasource.master.password}
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
@@ -135,7 +144,10 @@ spring:
# 日志文件配置
logging:
file:
- name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+ path: logs
+ level:
+ com.win: warn
+ org.springframework: warn
--- #################### 微信公众号相关配置 ####################
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
diff --git a/win-server/src/main/resources/application-test.yaml b/win-server/src/main/resources/application-test.yaml
index d378b0dd..c750c82d 100644
--- a/win-server/src/main/resources/application-test.yaml
+++ b/win-server/src/main/resources/application-test.yaml
@@ -9,51 +9,60 @@ spring:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
- org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration # 排除积木报表带来的 MongoDB 的自动配置
+ shardingsphere:
+ mode:
+ type: Memory
+ # 属性配置
+ props:
+ sql.show: true
+ ## 数据源配置
+ datasource:
+ names: master,slave0,slave1
+ # 主数据源
+ master:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave0:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读数据源
+ slave1:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://dev.ccwin-in.com:23113/sfms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: learun
+ password: Microdoft@2021
+ # 读写分离类型,如: Static,Dynamic
+ rules:
+ readwrite-splitting:
+ data-sources:
+ myds:
+ type: Static
+ props:
+ write-data-source-name: master
+ read-data-source-names: slave0,slave1
+ load-balancer-name: alg_round
+ load-balancers:
+ alg_round:
+ type: ROUND_ROBIN
datasource:
- druid: # Druid 【监控】相关的全局配置
- web-stat-filter:
- enabled: true
- stat-view-servlet:
- enabled: true
- allow: # 设置白名单,不填则允许所有访问
- url-pattern: /druid/*
- login-username: # 控制台管理用户名和密码
- login-password:
- filter:
- stat:
- enabled: true
- log-slow-sql: true # 慢 SQL 记录
- slow-sql-millis: 100
- merge-sql: true
- wall:
- config:
- multi-statement-allow: true
- dynamic: # 多数据源配置
- druid: # Druid 【连接池】相关的全局配置
- initial-size: 5 # 初始连接数
- min-idle: 10 # 最小连接池数量
- max-active: 20 # 最大连接池数量
- max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
- time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
- min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
- max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
- validation-query: SELECT 1 # 配置检测连接是否有效
- test-while-idle: true
- test-on-borrow: false
- test-on-return: false
+ dynamic:
+ strict: true
primary: master
datasource:
master:
- name: sfms
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
- slave: # 模拟从库,可根据自己需要修改
- name: sfms
- lazy: true # 开启懒加载,保证启动速度
- url: jdbc:mysql://dev.ccwin-in.com:23113/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
- username: learun
- password: Microdoft@2021
+ type: ${spring.shardingsphere.datasource.master.type}
+ driver-class-name: ${spring.shardingsphere.datasource.master.driverClassName}
+ url: ${spring.shardingsphere.datasource.master.url}
+ username: ${spring.shardingsphere.datasource.master.username}
+ password: ${spring.shardingsphere.datasource.master.password}
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
@@ -135,7 +144,10 @@ spring:
# 日志文件配置
logging:
file:
- name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+ path: logs
+ level:
+ com.win: info
+ org.springframework: warn
--- #################### 微信公众号相关配置 ####################
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
diff --git a/win-server/src/main/resources/application.yaml b/win-server/src/main/resources/application.yaml
index 5ee057ba..37d7fd4b 100644
--- a/win-server/src/main/resources/application.yaml
+++ b/win-server/src/main/resources/application.yaml
@@ -3,11 +3,12 @@ spring:
name: win-server
profiles:
+ include: druid
active: dev
main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
-
+ allow-bean-definition-overriding: true
# Servlet 配置
servlet:
# 文件上传相关配置项
@@ -56,7 +57,7 @@ flowable:
# 2. true: 启动时会对数据库中所有表进行更新操作,如果表存在,不做处理,反之,自动创建表
# 3. create_drop: 启动时自动创建表,关闭时自动删除表
# 4. drop_create: 启动时,删除旧表,再创建新表
- database-schema-update: true # 设置为 false,可通过 https://github.com/flowable/flowable-sql 初始化
+ database-schema-update: false # 设置为 false,可通过 https://github.com/flowable/flowable-sql 初始化
db-history-used: true # flowable6 默认 true 生成信息表,无需手动设置
check-process-definitions: false # 设置为 false,禁用 /resources/processes 自动部署 BPMN XML 流程
history-level: full # full:保存历史数据的最高级别,可保存全部流程相关细节,包括流程流转各节点参数
@@ -65,6 +66,9 @@ flowable:
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+ logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl
+ # 开启缓存
+ cache-enabled: true
global-config:
db-config:
id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
diff --git a/win-server/src/main/resources/logback-spring.xml b/win-server/src/main/resources/logback-spring.xml
index ce034daf..ebc0d296 100644
--- a/win-server/src/main/resources/logback-spring.xml
+++ b/win-server/src/main/resources/logback-spring.xml
@@ -1,76 +1,108 @@
+
-
-
-
-
-
-
+
+
+
-
-
-
-
- ${PATTERN_DEFAULT}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ debug
+
+
+ ${CONSOLE_LOG_PATTERN}
+
+ UTF-8
-
-
-
-
-
- ${PATTERN_DEFAULT}
-
-
-
- ${LOG_FILE}
-
-
- ${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}
-
- ${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}
-
- ${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}
-
- ${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}
-
- ${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}
+
+
+ ${log.path}/sys-info.log
+
+
+
+ ${log.path}/sys-info.%d{yyyy-MM-dd}.log
+
+ 60
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
-
-
-
- 0
-
- 256
-
+
+
+ ${log.path}/sys-error.log
+
+
+
+ ${log.path}/sys-error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
-
-
-
-
- ${PATTERN_DEFAULT}
-
+
+
+ ${log.path}/sys-user.log
+
+
+ ${log.path}/sys-user.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
\ No newline at end of file