网站规划和建设,怎么做网站板块,建设银行+贷款+查询+网站,外贸实用工具文章目录DRUID介绍配置参数基于纯Java代码使用(不建议使用)#xff1a;ds.properties内容#xff1a;基于Spring的配置#xff1a;浏览器验证功能DRUID介绍
DRUID是阿里巴巴开源平台上一个数据库连接池实现#xff0c;它结合了C3P0、DBCP、PROXOOL等DB池的优点#xff0c…
文章目录DRUID介绍配置参数基于纯Java代码使用(不建议使用)ds.properties内容基于Spring的配置浏览器验证功能DRUID介绍
DRUID是阿里巴巴开源平台上一个数据库连接池实现它结合了C3P0、DBCP、PROXOOL等DB池的优点同时加入了日志监控可以很好的监控DB池连接和SQL的执行情况可以说是针对监控而生的DB连接池
配置参数
和其它连接池一样DRUID的DataSource类为com.alibaba.druid.pool.DruidDataSource基本配置参数如下
配置缺省值说明name配置这个属性的意义在于如果存在多个数据源监控的时候可以通过名字来区分开来。 如果没有配置将会生成一个名字格式是“DataSource-” System.identityHashCode(this)jdbcUrl连接数据库的url不同数据库不一样。例如 mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:10.20.149.85:1521:ocnautousername连接数据库的用户名password连接数据库的密码。如果你不希望密码直接写在配置文件中可以使用ConfigFilter。详细看这里https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilterdriverClassName根据url自动识别这一项可配可不配如果不配置druid会根据url自动识别dbType然后选择相应的driverClassName(建议配置下)initialSize0初始化时建立物理连接的个数。初始化发生在显示调用init方法或者第一次getConnection时maxActive8最大连接池数量maxIdle8已经不再使用配置了也没效果minIdle最小连接池数量maxWait获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。poolPreparedStatementsfalse是否缓存preparedStatement也就是PSCache。PSCache对支持游标的数据库性能提升巨大比如说oracle。在mysql下建议关闭。maxOpenPreparedStatements-1要启用PSCache必须配置大于0当大于0时poolPreparedStatements自动触发修改为true。在Druid中不会存在Oracle下PSCache占用内存过多的问题可以把这个数值配置大一些比如说100validationQuery用来检测连接是否有效的sql要求是一个查询语句。如果validationQuery为nulltestOnBorrow、testOnReturn、testWhileIdle都不会其作用。testOnBorrowtrue申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。testOnReturnfalse归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能testWhileIdlefalse建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。timeBetweenEvictionRunsMillis有两个含义 1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据详细看testWhileIdle属性的说明numTestsPerEvictionRun不再使用一个DruidDataSource只支持一个EvictionRuntestWhileIdlefalse建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。timeBetweenEvictionRunsMillis有两个含义 1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据详细看testWhileIdle属性的说明numTestsPerEvictionRun不再使用一个DruidDataSource只支持一个EvictionRunminEvictableIdleTimeMillisconnectionInitSqls物理连接初始化的时候执行的sqlexceptionSorter根据dbType自动识别当数据库抛出一些不可恢复的异常时抛弃连接filters属性类型是字符串通过别名的方式配置扩展插件常用的插件有 监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wallproxyFilters类型是Listcom.alibaba.druid.filter.Filter如果同时配置了filters和proxyFilters是组合关系并非替换关系
基于纯Java代码使用(不建议使用)
package demo.test;import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;public class DBUtil {private static DataSource ds null; static {try{InputStream in DBUtil.class.getClassLoader().getResourceAsStream(ds.properties);Properties props new Properties();props.load(in);ds DruidDataSourceFactory.createDataSource(props);}catch(Exception ex){ex.printStackTrace();}}public static Connection openConnection() throws SQLException{return ds.getConnection();} }ds.properties内容
driverClassName oracle.jdbc.driver.OracleDriver
url jdbc:oracle:thin:127.0.0.1:1521:ORCL
username ******
password ******initialSize 5
maxActive 10
minIdle 3
maxWait 60000
removeAbandoned true
removeAbandonedTimeout 180
timeBetweenEvictionRunsMillis 60000
minEvictableIdleTimeMillis 300000
validationQuery SELECT 1 FROM DUAL
testWhileIdle true
testOnBorrow false
testOnReturn false
poolPreparedStatements true
maxPoolPreparedStatementPerConnectionSize 50
filters stat基于Spring的配置
bean iddruidDataSource classcom.alibaba.druid.pool.DruidDataSourceinit-methodinit destroy-methodclose!-- 数据库基本信息配置 --property namedriverClassName value${oracle.driver} /property nameurl value${oracle.url} /property nameusername value${oracle.username} /property namepassword value${oracle.password} / !-- 初始化连接数量 --property nameinitialSize value${druid.initialSize} /!-- 最大并发连接数 --property namemaxActive value${druid.maxActive} /!-- 最大空闲连接数 --property namemaxIdle value${druid.maxIdle} /!-- 最小空闲连接数 --property nameminIdle value${druid.minIdle} /!-- 配置获取连接等待超时的时间 -- property namemaxWait value${druid.maxWait} /!-- 超过时间限制是否回收 --property nameremoveAbandoned value${druid.removeAbandoned} /!-- 超过时间限制多长 --property nameremoveAbandonedTimeout value${druid.removeAbandonedTimeout} /!-- 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒 --property nametimeBetweenEvictionRunsMillis value${druid.timeBetweenEvictionRunsMillis} /!-- 配置一个连接在池中最小生存的时间单位是毫秒 --property nameminEvictableIdleTimeMillis value${druid.minEvictableIdleTimeMillis} /!-- 用来检测连接是否有效的sql要求是一个查询语句-- property namevalidationQuery value${druid.validationQuery} /!-- 申请连接的时候检测 --property nametestWhileIdle value${druid.testWhileIdle} /!-- 申请连接时执行validationQuery检测连接是否有效配置为true会降低性能 --property nametestOnBorrow value${druid.testOnBorrow} /!-- 归还连接时执行validationQuery检测连接是否有效配置为true会降低性能 --property nametestOnReturn value${druid.testOnReturn} /!-- 打开PSCache并且指定每个连接上PSCache的大小 --property namepoolPreparedStatements value${druid.poolPreparedStatements} / property namemaxPoolPreparedStatementPerConnectionSize value${druid.maxPoolPreparedStatementPerConnectionSize} /!--属性类型是字符串通过别名的方式配置扩展插件常用的插件有 监控统计用的filter:stat日志用的filter:log4j防御SQL注入的filter:wall --property namefilters value${druid.filters} / /bean启用Web监控统计功能需要在Web应用的web.xml中加入以下内容
filterfilter-nameDruidWebStatFilter/filter-namefilter-classcom.alibaba.druid.support.http.WebStatFilter/filter-classinit-paramparam-nameexclusions/param-nameparam-value*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*/param-value/init-param
/filter
filter-mappingfilter-nameDruidWebStatFilter/filter-nameurl-pattern/*/url-pattern
/filter-mapping
servletservlet-nameDruidStatView/servlet-nameservlet-classcom.alibaba.druid.support.http.StatViewServlet/servlet-class
/servlet
servlet-mappingservlet-nameDruidStatView/servlet-nameurl-pattern/druid/*/url-pattern
/servlet-mapping浏览器验证功能
访问监控页面http://ipport/projectName/druid/index.html