springboot利用druid连接池做数据库密码加密(password-callback)

springboot利用Druid连接池做数据库密码加密(password-callback)

Druid的简介

Druid是一个JDBC组件,包括三部分

  1. DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
  2. DruidDataSource 高效可管理的数据库连接池。
  3. SQL Parser

Druid可以做什么

  1. 监控数据库访问性能,Druid内置StatFilter插件,能够详细统计SQL的性能,对于线上分析数据库有很大的帮助
  2. 替换了以前的连接池DBCP和C3P0,Druid是一个高效,功能强大,拓展性好的数据库 ,在springboot 2.X版本内置hikari连接池情况下,Druid靠着好的拓展性依旧占据着大部分的连接池市场
  3. 提供了数据库加密,保密性一直是程序员比较头疼的问题,在安全性上,Druid提供了PasswordCallback。让数据库密码更加的安全
  4. SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

Druid的性能

目前的性能测试来看,Druid的性能还是处于中高水平,大概的性能排序可以理解为:
hikariCP>druid>tomcat-jdbc>dbcp>c3p0

Druid的属性

Druid的属性简单截图
由于Druid的属性太多,这里挑几个最常用的给大家介绍下

属性 默认值 描述
username 连接数据库的用户名
password 连接数据库的密码
jdbcurl 同DBCP的jdbcUrl的属性
driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 初始化连接:连接池启动时创建的初始化连接数量
maxActive 8 最大连接池数量(Maximum number of Connections a pool will maintain at any given time.) *参见DBCP中的maxTotal属性
minIdle 最小连接池数量
maxWait 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedState- ments false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
removeAbandoned-Timeout 指定连接建立多长时间就需要被强制关闭
filters 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 1)监控统计用的filter:stat 2)日志用的filter:log4j 3)防御sql注入的filter:wall

更多详细的介绍可以参考http://www.iteye.com/magazines/90

但是发现其实password-callback其实用的不多,因为加密这个概念在日常的开发中虽然有注意,但是对于不了解Druid的人。password-callback配置其实很少用,这篇文章中主要讲一讲password-callback的用法

password-callback用法

1. 生成秘钥

通过jar包生成密文

 java -cp druid-1.1.17.jar com.alibaba.druid.filter.config.ConfigTools 密码

123456生成的密文

2.密文放在yml配置中

简单配置
在这里简单的使用就结束了,单数据情况下,Druid会自动加解密,所以不需要重写方法,贴上Druid生成密文的方法:
生成方法
下一篇简单介绍多数据源怎么处理

发布了8 篇原创文章 · 获赞 0 · 访问量 402

猜你喜欢

转载自blog.csdn.net/weixin_42508926/article/details/103896387