自定义数据库连接池(DruidDataSource)

Exisi 2022-06-28 07:38:21
Categories: Tags:

 

 

<dependency>

  <groupId>com.alibaba</groupId>

  <artifactId>druid-spring-boot-starter</artifactId>

  <version>1.1.10</version>

</dependency>

 

server:

  port: 8082   # HTTP (Tomcat) port

spring:

  datasource:

    driver-class-name: com.mysql.cj.jdbc.Driver

    url: jdbc:mysql://localhost:3306/student?serverTimezone=GMT=&useUnicode=true&characterEncoding=utf-8&useSSL=true

    username: root

    password: Mysql123456

    type: com.alibaba.druid.pool.DruidDataSource

    #最大活跃数

    maxActive: 20

    #初始化数量

    initialSize: 1

    #最大连接等待超时时间

    maxWait: 60000

    #打开PSCache,并且指定每个连接PSCache的大小

    poolPreparedStatements: true

    maxPoolPreparedStatementPerConnectionSize: 20

    #通过connectionProperties属性来打开mergeSql功能;慢SQL记录

    #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

    minIdle: 1

    timeBetweenEvictionRunsMillis: 60000

    minEvictableIdleTimeMillis: 300000

    validationQuery: select 1 from dual

    testWhileIdle: true

    testOnBorrow: false

    testOnReturn: false

    #配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙

    filters: stat, wall, log4j

 

  jpa:

    hibernate:

      ddl-auto: update  # 第一次建表create  后面用update

    show-sql: true

示例

    <!-- Spring整合阿里巴巴开源数据源Druid -->

    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

        init-method="init" destroy-method="close">

        <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->

        <property name="driverClassName" value="${driverClassName}" />

        <property name="url" value="${jdbc_url}" />

        <property name="username" value="${jdbc_username}" />

        <property name="password" value="${jdbc_password}" />

 

        <!-- 初始化连接大小 -->

        <property name="initialSize" value="0" />

        <!-- 连接池最大使用连接数量 -->

        <property name="maxActive" value="20" />

        <!-- 连接池最小空闲 -->

        <property name="minIdle" value="0" />

        <!-- 获取连接最大等待时间 -->

        <property name="maxWait" value="60000" />

 

        <!-- <property name="poolPreparedStatements" value="true" /> <property 

            name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->

 

        <property name="validationQuery" value="${validationQuery}" />

        <!-- 取得、返回对象和空闲时是否进行验证,检查对象是否有效,

        默认都为false即不验证 -->

        <property name="testOnBorrow" value="false" />

        <property name="testOnReturn" value="false" />

        <property name="testWhileIdle" value="true" />

 

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

        <property name="minEvictableIdleTimeMillis" value="25200000" />

 

        <!-- 打开removeAbandoned功能 -->

        <property name="removeAbandoned" value="true" />

        <!-- 1800秒,也就是30分钟 -->

        <property name="removeAbandonedTimeout" value="1800" />

        <!-- 关闭abanded连接时输出错误日志 -->

        <property name="logAbandoned" value="true" />

 

        <!-- 监控数据库 -->

        <!-- 配置监控统计拦截的filters -->

        <!-- <property name="filters" value="mergeStat" /> -->

        <property name="filters" value="stat,config" />

 

        <!-- 数据库密码加密 -->

        <!-- <property name="connectionProperties" value="config.decrypt=true"  /> ->

    </bean>