提交 | 用户 | 时间
|
fd2207
|
1 |
package com.jcdm.framework.config.properties; |
懒 |
2 |
|
|
3 |
import org.springframework.beans.factory.annotation.Value; |
|
4 |
import org.springframework.context.annotation.Configuration; |
|
5 |
import com.alibaba.druid.pool.DruidDataSource; |
|
6 |
|
|
7 |
/** |
|
8 |
* druid 配置属性 |
|
9 |
* |
|
10 |
* @author jc |
|
11 |
*/ |
|
12 |
@Configuration |
|
13 |
public class DruidProperties |
|
14 |
{ |
|
15 |
@Value("${spring.datasource.druid.initialSize}") |
|
16 |
private int initialSize; |
|
17 |
|
|
18 |
@Value("${spring.datasource.druid.minIdle}") |
|
19 |
private int minIdle; |
|
20 |
|
|
21 |
@Value("${spring.datasource.druid.maxActive}") |
|
22 |
private int maxActive; |
|
23 |
|
|
24 |
@Value("${spring.datasource.druid.maxWait}") |
|
25 |
private int maxWait; |
|
26 |
|
|
27 |
@Value("${spring.datasource.druid.connectTimeout}") |
|
28 |
private int connectTimeout; |
|
29 |
|
|
30 |
@Value("${spring.datasource.druid.socketTimeout}") |
|
31 |
private int socketTimeout; |
|
32 |
|
|
33 |
@Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}") |
|
34 |
private int timeBetweenEvictionRunsMillis; |
|
35 |
|
|
36 |
@Value("${spring.datasource.druid.minEvictableIdleTimeMillis}") |
|
37 |
private int minEvictableIdleTimeMillis; |
|
38 |
|
|
39 |
@Value("${spring.datasource.druid.maxEvictableIdleTimeMillis}") |
|
40 |
private int maxEvictableIdleTimeMillis; |
|
41 |
|
|
42 |
@Value("${spring.datasource.druid.validationQuery}") |
|
43 |
private String validationQuery; |
|
44 |
|
|
45 |
@Value("${spring.datasource.druid.testWhileIdle}") |
|
46 |
private boolean testWhileIdle; |
|
47 |
|
|
48 |
@Value("${spring.datasource.druid.testOnBorrow}") |
|
49 |
private boolean testOnBorrow; |
|
50 |
|
|
51 |
@Value("${spring.datasource.druid.testOnReturn}") |
|
52 |
private boolean testOnReturn; |
|
53 |
|
|
54 |
public DruidDataSource dataSource(DruidDataSource datasource) |
|
55 |
{ |
|
56 |
/** 配置初始化大小、最小、最大 */ |
|
57 |
datasource.setInitialSize(initialSize); |
|
58 |
datasource.setMaxActive(maxActive); |
|
59 |
datasource.setMinIdle(minIdle); |
|
60 |
|
|
61 |
/** 配置获取连接等待超时的时间 */ |
|
62 |
datasource.setMaxWait(maxWait); |
|
63 |
|
|
64 |
/** 配置驱动连接超时时间,检测数据库建立连接的超时时间,单位是毫秒 */ |
|
65 |
datasource.setConnectTimeout(connectTimeout); |
|
66 |
|
|
67 |
/** 配置网络超时时间,等待数据库操作完成的网络超时时间,单位是毫秒 */ |
|
68 |
datasource.setSocketTimeout(socketTimeout); |
|
69 |
|
|
70 |
/** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */ |
|
71 |
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); |
|
72 |
|
|
73 |
/** 配置一个连接在池中最小、最大生存的时间,单位是毫秒 */ |
|
74 |
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); |
|
75 |
datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); |
|
76 |
|
|
77 |
/** |
|
78 |
* 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 |
|
79 |
*/ |
|
80 |
datasource.setValidationQuery(validationQuery); |
|
81 |
/** 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 */ |
|
82 |
datasource.setTestWhileIdle(testWhileIdle); |
|
83 |
/** 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ |
|
84 |
datasource.setTestOnBorrow(testOnBorrow); |
|
85 |
/** 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ |
|
86 |
datasource.setTestOnReturn(testOnReturn); |
|
87 |
return datasource; |
|
88 |
} |
|
89 |
} |