-
Notifications
You must be signed in to change notification settings - Fork 0
/
配置.txt
104 lines (92 loc) · 9.7 KB
/
配置.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!-- 数据源 -->
<bean id="dataSource_biz" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="${master.db.jdbc.url}" /> <!-- 连接数据库的url -->
<property name="username" value="${master.db.jdbc.username}" /> <!-- 连接数据库的用户名 -->
<property name="password" value="${master.db.jdbc.password}" /> <!-- 连接数据库的密码 -->
<property name="driverClassName" value="${master.db.jdbc.driverClassName}" /> <!-- 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName -->
<property name="maxActive" value="${master.db.jdbc.maxActive}" /> <!-- 最大连接池数量 -->
<property name="initialSize" value="${master.db.jdbc.initialSize}" /> <!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 -->
<property name="minIdle" value="${master.db.jdbc.minIdle}" /> <!-- 最小连接池数量 -->
<property name="maxWait" value="${master.db.jdbc.maxWait}" /> <!-- 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 -->
<!--
有两个含义:
1) Destroy线程会检测连接的间隔时间
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
-->
<property name="timeBetweenEvictionRunsMillis" value="${master.db.jdbc.timeBetweenEvictionRunsMillis}" />
<property name="minEvictableIdleTimeMillis" value="${master.db.jdbc.minEvictableIdleTimeMillis}" /><!-- 连接保持空闲而不被驱逐的最长时间,单位:毫秒,默认30分钟 -->
<property name="maxEvictableIdleTimeMillis" value="${master.db.jdbc.maxEvictableIdleTimeMillis}" /> <!--连接空闲时间大于maxEvictableIdleTimeMillis,那么,这连接就会被close掉 -->
<property name="validationQuery" value="${master.db.jdbc.validationQuery}" /> <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 -->
<property name="validationQueryTimeout" value="${master.db.jdbc.validationQueryTimeout}" /> <!-- 单位:秒,检测连接是否有效的超时时间。底层调用jdbc,Statement对象的void setQueryTimeout(int seconds)方法 -->
<property name="testWhileIdle" value="${master.db.jdbc.testWhileIdle}" /> <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
<property name="testOnBorrow" value="${master.db.jdbc.testOnBorrow}" /> <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
<property name="testOnReturn" value="${master.db.jdbc.testOnReturn}" /> <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<!-- PSCache开关 -->
<property name="poolPreparedStatements" value="${master.db.jdbc.poolPreparedStatements}" />
<!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说20 -->
<property name="maxOpenPreparedStatements" value="${master.db.jdbc.maxOpenPreparedStatements}" />
<!--
属性类型是字符串,通过别名的方式配置扩展插件,
常用的插件有: 监控统计用的filter:stat、日志用的filter:log4j、防御sql注入的filter:wall
-->
<property name="filters" value="${master.db.jdbc.filters}" />
<property name="removeAbandoned" value="${master.db.jdbc.removeAbandoned}" /> <!-- 打开removeAbandoned功能 -->
<property name="removeAbandonedTimeout" value="${master.db.jdbc.removeAbandonedTimeout}" /> <!-- 1800秒,也就是30分钟 -->
<property name="logAbandoned" value="${master.db.jdbc.logAbandoned}" /> <!-- 关闭abanded连接时输出错误日志 -->
</bean>
<!-- 定义AOP切面处理器 -->
<bean class="com.awifi.proxy.DataSourceAspect" id="dataSourceAspect">
<!-- 注入事务策略 -->
<property name="txAdvice" ref="txAdvice"/>
<!-- 指定slave方法的前缀(非必须) -->
<property name="slaveMethodStartWith" value="query,find,get"/>
</bean>
<!-- 定义数据源,使用自己实现的数据源 -->
<bean id="dataSource" class="com.awifi.proxy.DynamicDataSource">
<!-- 设置多个数据源 -->
<property name="targetDataSources">
<map key-type="java.lang.String">
<!-- 这个key需要和程序中的key一致 -->
<entry key="master" value-ref="dataSource_master"/>
<entry key="slave01" value-ref="dataSource_slave"/>
</map>
</property>
<!-- 设置默认的数据源,这里默认走写库 -->
<property name="defaultTargetDataSource" ref="dataSource_master"/>
</bean>
<!-- 读连接池 -->
<bean id="dataSource_slave" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="${slave.db.jdbc.url}" /> <!-- 连接数据库的url -->
<property name="username" value="${slave.db.jdbc.username}" /> <!-- 连接数据库的用户名 -->
<property name="password" value="${slave.db.jdbc.password}" /> <!-- 连接数据库的密码 -->
<property name="driverClassName" value="${slave.db.jdbc.driverClassName}" /> <!-- 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName -->
<property name="maxActive" value="${slave.db.jdbc.maxActive}" /> <!-- 最大连接池数量 -->
<property name="initialSize" value="${slave.db.jdbc.initialSize}" /> <!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 -->
<property name="minIdle" value="${slave.db.jdbc.minIdle}" /> <!-- 最小连接池数量 -->
<property name="maxWait" value="${slave.db.jdbc.maxWait}" /> <!-- 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 -->
<!--
有两个含义:
1) Destroy线程会检测连接的间隔时间
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
-->
<property name="timeBetweenEvictionRunsMillis" value="${slave.db.jdbc.timeBetweenEvictionRunsMillis}" />
<property name="minEvictableIdleTimeMillis" value="${slave.db.jdbc.minEvictableIdleTimeMillis}" /><!-- 连接保持空闲而不被驱逐的最长时间,单位:毫秒,默认30分钟 -->
<property name="maxEvictableIdleTimeMillis" value="${slave.db.jdbc.maxEvictableIdleTimeMillis}" /> <!--连接空闲时间大于maxEvictableIdleTimeMillis,那么,这连接就会被close掉 -->
<property name="validationQuery" value="${slave.db.jdbc.validationQuery}" /> <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 -->
<property name="validationQueryTimeout" value="${slave.db.jdbc.validationQueryTimeout}" /> <!-- 单位:秒,检测连接是否有效的超时时间。底层调用jdbc,Statement对象的void setQueryTimeout(int seconds)方法 -->
<property name="testWhileIdle" value="${slave.db.jdbc.testWhileIdle}" /> <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
<property name="testOnBorrow" value="${slave.db.jdbc.testOnBorrow}" /> <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
<property name="testOnReturn" value="${slave.db.jdbc.testOnReturn}" /> <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<!-- PSCache开关 -->
<property name="poolPreparedStatements" value="${slave.db.jdbc.poolPreparedStatements}" />
<!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说20 -->
<property name="maxOpenPreparedStatements" value="${slave.db.jdbc.maxOpenPreparedStatements}" />
<!--
属性类型是字符串,通过别名的方式配置扩展插件,
常用的插件有: 监控统计用的filter:stat、日志用的filter:log4j、防御sql注入的filter:wall
-->
<property name="filters" value="${slave.db.jdbc.filters}" />
<property name="removeAbandoned" value="${slave.db.jdbc.removeAbandoned}" /> <!-- 打开removeAbandoned功能 -->
<property name="removeAbandonedTimeout" value="${slave.db.jdbc.removeAbandonedTimeout}" /> <!-- 1800秒,也就是30分钟 -->
<property name="logAbandoned" value="${slave.db.jdbc.logAbandoned}" /> <!-- 关闭abanded连接时输出错误日志 -->
</bean>