当前位置:   article > 正文

Spring Boot 配置连接池(HikariCP | Druid)_springboot hikaricp public-key

springboot hikaricp public-key

连接池

HikariCP

HikariCP很快的原因:

1)字节码级别优化(很多方法通过JavaAssist生成)

2)大量小改进

  • 用FastStatementList代替ArrayList
  • 无锁集合 ConcurrentBag
  • 代理类的优化(比如,用 invokestatic 代替了 invokevirtual)

在Spring Boot 中的配置:

Spring Boot 2.x

  • 默认使用 HikariCP
  • 配置 spring.datasource.hikari.* 配置

常用HikariCP配置参数:

常用配置

# 最大的数据库连接池的大小
spring.datasource.hikari.maximumPoolSize=5
# 最小的空闲连接个数
spring.datasource.hikari.minimumIdle=5
# 空闲连接的超时
spring.datasource.hikari.idleTimeout=600000
# 连接的超时
spring.datasource.hikari.connectionTimeout=30000
# 每个连接最大存活多久
spring.datasource.hikari.maxLifetime=1800000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其他配置详见 HikariCP 官网:

  • https://github.com/brettwooldridge/HikariCP

Alibaba Druid

1.官方介绍:

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Logging能诊断Hack应用行为。

2.Druid实用的功能:
  • 详细的监控
  • ExceptionSorter,针对主流数据库的返回码都有支持
  • SQL防注入
  • 内置加密配置
  • 众多扩展点,方便进行定制【通过Druid Filter来实现】
3.数据源配置

1)直接配置 DruidDataSource

2)通过 druid-spring-boot-starter

  • spring.datasource.druid.*
spring.datasource.url=jdbc:h2:mem:foo
spring.datasource.username=sa
spring.datasource.password=n/z7PyA5cvcXvs8px8FVmBVpaRyNsvJb3X7YfS38DJrIg25EbZaZGvH4aHcnc97Om0islpCAPc3MqsGvsrxVJw==

# 初始连接池大小
spring.datasource.druid.initial-size=5
# 最大活跃数
spring.datasource.druid.max-active=5
# 最小空闲数
spring.datasource.druid.min-idle=5

spring.datasource.druid.filters=conn,config,stat,slf4j

spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
spring.datasource.druid.filter.config.enabled=true

# 获取连接时做检查
spring.datasource.druid.test-on-borrow=true
# 归还连接时做检查
spring.datasource.druid.test-on-return=true
# 空闲连接时做检查
spring.datasource.druid.test-while-idle=true

public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALS8ng1XvgHrdOgm4pxrnUdt3sXtu/E8My9KzX8sXlz+mXRZQCop7NVQLne25pXHtZoDYuMh3bzoGj6v5HvvAQ8CAwEAAQ==
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

Filter配置

  • spring.datasource.druid.filters=conn,config,stat,slf4j (全部使用默认值)

密码加密

spring.datasource.password=<加密密码>
spring.datasource.druid.filter.config.enabled=true
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=<public-key>
  • 1
  • 2
  • 3

SQL防注入

spring.datasource.druid.filter.wall.enabled=true
# 指定数据库类型
spring.datasource.druid.filter.wall.db-type=h2
# 不允许delete操作
spring.datasource.druid.filter.wall.config.delete-allow=false
# 不允许drop table操作
spring.datasource.druid.filter.wall.config.drop-table-allow=false
# 注:也可以在DB的配置上去封禁这些
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
4.Druid Filter
  • 用于定制连接池操作的各种环节
  • 可以继承 FilterEventAdapter 以便方便地实现Filter
  • 修改 META-IINF/druid-filter.properties 增加 Filter配置

注意:在引入Druid依赖时,一定要把HikariCP排除,如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>HikariCP</artifactId>
            <groupId>com.zaxxer</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
5.连接池选择时的考量
  • 可靠性
  • 性能
  • 功能
  • 可扩展性
  • 可运维性
  • 其他

社区是否活跃、作者是否修改。。。

学习文档:极客时间-玩转Spring全家桶

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/336938
推荐阅读
相关标签
  

闽ICP备14008679号