logging.level.druid.sql.DataSource=DEBUG
我们可以看到执行SQL的整个过程 , 开启连接>从连接池获取一个连接>组装SQL语句>执行>结果集返回>连接池回收连接
这里只用了log4j2这一种类型 , 其他可以自行去验证 。
【druid连接池最大连接数 druid连接池监控页面】 WallFilter的功能是防御SQL注入攻击 。 它是基于SQL语法分析 , 理解其中的SQL语义 , 然后做处理的 , 智能 , 准确 , 误报率低 。 减少风险的发生 , wall拦截器还是很重要的 。 比如说不允许使用truncate , 不允许物理删除 , 这时候wall就用得上了 。 配置方式有两种:
spring.datasource.druid.filters=stat,wall,log4j2
这种配置是默认配置 , 而且大多数都不会拦截 , 可能不符合特定的场景 , 默认属性值参照:https://www.bookstack.cn/read/Druid/ffdd9118e6208531.md
这种方式的好处是:我们可以针对特定场景进行限定 , 比如说不能用存储过程 , 不能物理删除 , 是否允许语句中有注释等等 。
//在DruidDataSource生成前注入WallFilter
@ConfigurationProperties(prefix = "spring.datasource.druid")
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.getProxyFilters().add(wallFilter());
return dataSource;
}
@Bean
@ConfigurationProperties("spring.datasource.druid.filter.wall.config")
public WallConfig wallConfig(){
return new WallConfig();
}
@Bean
public WallFilter wallFilter(){
WallFilter filter = new WallFilter();
filter.setConfig(wallConfig());
filter.setDbType("mysql");
return filter;
}
#不允许物理删除语句
spring.datasource.druid.filter.wall.config.delete-allow=false
执行一下试试效果:
可以看到日志显示 , 不允许删除 , 这样可以避免一些同学不按照公司开发规范来开发代码 , 减少风险 。 其他配置自己可以试验一下 。
Config作用:从配置文件中读取配置;从远程http文件中读取配置;为数据库密码提供加密功能
实际上前两项作用意义不大 , 最关键的是第三项作用 , 因为数据库密码直接写在配置中 , 对运维安全来说 , 是一个很大的挑战 。 Druid为此提供一种数据库密码加密的手段ConfigFilter
如何使用:
#在application.properties的链接属性配置项中增加config.file , 可以是本地文件 , 也可以是远程文件 , 比如config.file=http://127.0.0.1/druid-pool.properties
spring.datasource.druid.connection-properties=config.file=file:///Users/chenrui/druid-pool.properties
使用下面的命令生成数据库密码的密文和秘钥对
java -cp druid-1.0.16.jar .alibaba.druid.filter.config.ConfigTools you_password
spring.datasource.druid.password=kPYuT1e6i6M929mNvKfvhyBx3eCI+Fs0pqA3n7GQYIoo76OaWVg3KALr7EdloivFVBSeF0zo5IGIfpbGtAKa+Q==
自己启动一下试试 , 发现一切正常 , 信息安全问题也解决了 。
网络上有这么一个图 , 可以看到Druid是和其声明的一致(为监控而生) , 但是目前市面上有很多监控相关的中间件和技术 , HikariCP可以通过这些技术弥补监控方面的不足
HikariCP则说自己是性能最好的连接池 , 但是Druid也经受住了阿里双11的大考 , 实际上性能也是很好的
选择哪一款就见仁见智了 , 不过两款都是开源产品 , 阿里的Druid有中文的开源社区 , 交流起来更加方便 , 并且经过阿里多个系统的实验 , 想必也是非常的稳定 , 而Hikari是SpringBoot2.0默认的连接池 , 全世界使用范围也非常广 , 对于大部分业务来说 , 使用哪一款都是差不多的 , 毕竟性能瓶颈一般都不在连接池 。 大家可根据自己的喜好自由选择
- 怎么让水泥池里的鱼塘水清 水泥池塘水质怎么处理
- 什么花夏天开满池 什么花夏天开
- 别克君威蓄电池如何拆装
- 青鱼怎么做好吃 青鱼怎么养
- 鱼池水中有什么摆件吗 金钱龟风水摆件怎么放
- 混动可以拆电池当油车开吗
- 华晨中华v5钥匙电池怎么更换
- 别克英朗多久换电瓶 别克英朗蓄电池几年换
- 门口假山水池风水 南边水池假山风水
- 新捷达蓄电池怎么拆卸 捷达蓄电池怎么拆
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
