Druid配置详解,新手必须读

您所在的位置:网站首页 allow什么意思怎么读 Druid配置详解,新手必须读

Druid配置详解,新手必须读

2024-01-19 02:59| 来源: 网络整理| 查看: 265

什么是Druid

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 Druid也是配置最简单使用最方便的一种连接池。 Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以

Druid配置过程 加入maven依赖 com.alibaba druid 最新版本 参数说明

配置

缺省值

说明

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:ocnauto

username

 

连接数据库的用户名

password

 

连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

driverClassName

根据url自动识别

这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)

initialSize

0

初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时

maxActive

8

最大连接池数量

maxIdle

8

已经不再使用,配置了也没效果

minIdle

 

最小连接池数量

maxWait

 

获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。

poolPreparedStatements

false

是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。

maxOpenPreparedStatements

-1

要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100

validationQuery

 

用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。

testOnBorrow

true

申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。

testOnReturn

false

归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能

testWhileIdle

false

建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。

timeBetweenEvictionRunsMillis

 

有两个含义:  1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明

numTestsPerEvictionRun

 

不再使用,一个DruidDataSource只支持一个EvictionRun

minEvictableIdleTimeMillis

 

 

connectionInitSqls

 

物理连接初始化的时候执行的sql

exceptionSorter

根据dbType自动识别

当数据库抛出一些不可恢复的异常时,抛弃连接

filters

 

属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:  监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall

proxyFilters

 

类型是List,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系

 

spring-db.xml配置文件 web.xml druidWebStatFilter com.alibaba.druid.support.http.WebStatFilter exclusions /assets/*,*.css,*.js,*.gif,*.jpg,*.png,*.ico,*.eot,*.svg,*.ttf,*.woff,*.jsp,*.tpl,/druid/* druidWebStatFilter /* DruidStatView com.alibaba.druid.support.http.StatViewServlet resetEnable true loginUsername admin loginPassword admin DruidStatView /druid/*

只需要在启动spring窗口时候把加载数据操作换成加载spring-db.xml配置文件内容即可。 启动后在页面输入localhost:8080/druid druid监控页面

SpringBoot 加入maven依赖 com.alibaba druid-spring-boot-starter 1.1.10 yum文件配置 spring: datasource: # 数据源基本配置 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/ssm_crud type: com.alibaba.druid.pool.DruidDataSource # 数据源其他配置 druid: # 配置初始化大小、最小、最大线程数 initialSize: 5 minIdle: 5 # CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降 maxActive: 20 # 最大等待时间,内网:800,外网:1200(三次握手1s) maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最大空间时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 testWhileIdle: true # 设置从连接池获取连接时是否检查连接有效性,true检查,false不检查 testOnBorrow: true # 设置从连接池归还连接时是否检查连接有效性,true检查,false不检查 testOnReturn: true # 可以支持PSCache(提升写入、查询效率) poolPreparedStatements: true # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall,log4j # 保持长连接 keepAlive: true maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stargeSql=true;druid.stat.slowSqlMillis=500 添加配置类 @Configuration public class DruidConfig{ @ConfigurationProperties(prefix='spring.datasource') @Bean public DateSource druid(){ return new DruidDataSource(); } //配置Druid监控 @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); Map initParams=new HashMap(); initParams.put("loginUsername","admin"); initParams.put("loginPassword","admin"); initParams.put("allow","0.0.0.0");//默认允许所有访问 bean.setInitParameters(initParams); return bean; } //配置一个web监控的filter @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean bean=new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); Map initParams=new HashMap(); initParams.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParams); bean.setUrlPatterns(Arrays.asList("/*")); return bean; } } 扩展配置 spring监控 经过上述配置可以对sql进行监控,如果需要对spring容器进行监控需要改一下spring-db.xml配置文件(小编没有配置spring监控,发现可以对spring进行监控,有兴趣的小伙伴可以试一下) 上述完成后在spring-db.xml配置文件末添加 com.springmvc.contorller.* com.springmvc.service.* druid密码加密 durid还有一个功能是密码加密。普通连接池是需要把密码以明文方式写入配置文件中,别人可以直接获得数据账号和密码等重要信息,通过druid加密后就可以避免这个问题。 可以参考表格password加密提示进行操作。 引入druid依赖程序会下载druid的Jar包,我们需要找到maven仓库中Jar包下载位置,在空白处按shift并右击选择用命令窗口打开 在这里插入图片描述 执行 java -cp druid-1.1.13.jar com.alibaba.druid.filter.config.ConfigTools 数据库密码

在这里插入图片描述 会生成公钥、私钥和密码,我们需要公钥和密码进行配置 修改spring-db.xml配置文件



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3