Skip to content

Commit e878b0f

Browse files
committed
Java:APIJSONBoot-MultiDataSource 中 Druid 连接池配置新增测试 test 和线上 online 两个环境的配置
1 parent b994149 commit e878b0f

File tree

3 files changed

+69
-25
lines changed

3 files changed

+69
-25
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoDataSourceConfig.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ public DruidDataSource druidDataSource() {
4141
return new DruidDataSource();
4242
}
4343

44-
// @Bean
45-
// @ConfigurationProperties(prefix = "spring.datasource.druid-test")
46-
// public DruidDataSource druidTestDataSource(){
47-
// return new DruidDataSource();
48-
// }
49-
//
50-
// @Bean
51-
// @ConfigurationProperties(prefix = "spring.datasource.druid-online")
52-
// public DruidDataSource druidOnlineDataSource(){
53-
// return new DruidDataSource();
54-
// }
44+
@Bean
45+
@ConfigurationProperties(prefix = "spring.datasource.druid-test")
46+
public DruidDataSource druidTestDataSource(){
47+
return new DruidDataSource();
48+
}
49+
50+
@Bean
51+
@ConfigurationProperties(prefix = "spring.datasource.druid-online")
52+
public DruidDataSource druidOnlineDataSource(){
53+
return new DruidDataSource();
54+
}
5555

5656
}

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/DemoSQLExecutor.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package apijson.demo;
1616

1717
import java.sql.Connection;
18+
import java.util.Map;
1819

1920
import javax.sql.DataSource;
2021

@@ -52,36 +53,37 @@ public class DemoSQLExecutor extends APIJSONSQLExecutor {
5253
public Connection getConnection(SQLConfig config) throws Exception {
5354
String datasource = config.getDatasource();
5455
Log.d(TAG, "getConnection config.getDatasource() = " + datasource);
55-
56+
5657
Connection c = connectionMap.get(datasource);
5758
if (datasource != null && (c == null || c.isClosed())) {
5859
try {
5960
DataSource ds;
6061
switch (datasource) {
6162
case "HIKARICP":
6263
ds = DemoApplication.getApplicationContext().getBean(HikariDataSource.class);
63-
// 另一种方式是 DemoHikariCPConfig 初始化获取到 Datasource 后给静态变量 DATA_SOURCE 赋值: ds = DemoHikariCPConfig.DATA_SOURCE.getConnection();
64+
// 另一种方式是 DemoDataSourceConfig 初始化获取到 DataSource 后给静态变量 DATA_SOURCE_HIKARICP 赋值: ds = DemoDataSourceConfig.DATA_SOURCE_HIKARICP.getConnection();
6465
break;
6566
case "DRUID":
6667
case "DRUID-TEST":
6768
case "DRUID-ONLINE":
68-
ds = DemoApplication.getApplicationContext().getBean(DruidDataSource.class);
69-
// switch (datasource) {
70-
// case "DRUID-TEST":
71-
//
72-
// case "DRUID-ONLINE":
73-
// // 另一种方式是 DemoDruidConfig 初始化获取到 Datasource 后给静态变量 DATA_SOURCE 赋值: ds = DemoDruidConfig.DATA_SOURCE.getConnection();
74-
// break;
75-
// default:
76-
// ds = null;
77-
// break;
78-
// }
69+
Map<String, DruidDataSource> dsMap = DemoApplication.getApplicationContext().getBeansOfType(DruidDataSource.class);
70+
// 另一种方式是 DemoDataSourceConfig 初始化获取到 DataSource 后给静态变量 DATA_SOURCE_DRUID 赋值: ds = DemoDataSourceConfig.DATA_SOURCE_DRUID.getConnection();
71+
switch (datasource) {
72+
case "DRUID-TEST":
73+
ds = dsMap.get("druidTestDataSource");
74+
case "DRUID-ONLINE":
75+
ds = dsMap.get("druidOnlineDataSource");
76+
break;
77+
default:
78+
ds = dsMap.get("druidDataSource");
79+
break;
80+
}
7981
break;
8082
default:
8183
ds = null;
8284
break;
8385
}
84-
86+
8587
connectionMap.put(datasource, ds == null ? null : ds.getConnection());
8688
} catch (Exception e) {
8789
Log.e(TAG, "getConnection try { "

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/application.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,45 @@ spring:
4040
# filters: stat,wall,log4j
4141
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
4242
useGlobalDataSourceStat: true
43+
druid-test:
44+
driverClassName: com.mysql.cj.jdbc.Driver
45+
url: jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
46+
username: root
47+
password: apijson
48+
type: com.alibaba.druid.pool.DruidDataSource
49+
initialSize: 5
50+
minIdle: 5
51+
maxActive: 20
52+
maxWait: 60000
53+
timeBetweenEvictionRunsMillis: 60000
54+
minEvictableIdleTimeMillis: 300000
55+
validationQuery: SELECT 1 FROM DUAL
56+
testWhileIdle: true
57+
testOnBorrow: false
58+
testOnReturn: false
59+
poolPreparedStatements: true
60+
maxPoolPreparedStatementPerConnectionSize: 20
61+
# filters: stat,wall,log4j
62+
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
63+
useGlobalDataSourceStat: true
64+
druid-online:
65+
driverClassName: com.mysql.cj.jdbc.Driver
66+
url: jdbc:mysql://apijson.cn:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
67+
username: root
68+
password: apijson
69+
type: com.alibaba.druid.pool.DruidDataSource
70+
initialSize: 5
71+
minIdle: 5
72+
maxActive: 20
73+
maxWait: 60000
74+
timeBetweenEvictionRunsMillis: 60000
75+
minEvictableIdleTimeMillis: 300000
76+
validationQuery: SELECT 1 FROM DUAL
77+
testWhileIdle: true
78+
testOnBorrow: false
79+
testOnReturn: false
80+
poolPreparedStatements: true
81+
maxPoolPreparedStatementPerConnectionSize: 20
82+
# filters: stat,wall,log4j
83+
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
84+
useGlobalDataSourceStat: true

0 commit comments

Comments
 (0)