spring-boot-整合Druid数据源-06

spring-boot-整合Druid数据源-06,第1张

spring-boot-整合Druid数据源
  • 简 介 \color{#0000FF}{简介}
  • 添 加 d r u i d 依 赖 \color{#0000FF}{添加druid依赖} druid
  • 查 看 当 前 s p r i n g B o o t 数 据 源 类 型 \color{#0000FF}{查看当前springBoot数据源类型} springBoot
    • 编 写 测 试 类 \color{#0000FF}{编写测试类}
    • 运 行 结 果 \color{#0000FF}{运行结果}
  • 修 改 数 据 源 类 型 \color{#0000FF}{修改数据源类型}
    • 运 行 结 果 \color{#0000FF}{运行结果}
  • d u r i d 配 置 参 数 \color{#0000FF}{durid配置参数} durid
  • d u r i d 配 置 类 \color{#0000FF}{durid配置类} durid
  • 结 果 展 示 \color{#0000FF}{结果展示}

简 介 \color{#0000FF}{简介}

Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0,DBCP,PROXOOL等DB池的优点,同时加入了日志监控
Druid可以很好的监控DB池连接和SQL执行的情况,天生就是针对监控而生的DB连接池
springBoot2.0以上默认的是使用Hikari数据源,可以说HikariDruid都是当前Java Web上最优秀的数据源

添 加 d r u i d 依 赖 \color{#0000FF}{添加druid依赖} druid
<dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.2.9version>
 dependency>

        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.12version>
dependency>
查 看 当 前 s p r i n g B o o t 数 据 源 类 型 \color{#0000FF}{查看当前springBoot数据源类型} springBoot 编 写 测 试 类 \color{#0000FF}{编写测试类}
package com.dragon.jdbc;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

@SpringBootTest
class JdbcApplicationTests {

    @Resource
    DataSource dataSource;

    @Test
    void contextLoads() throws SQLException {
        /*
        * class com.zaxxer.hikari.HikariDataSource  == 数据源
         * */
        System.out.println(dataSource.getClass());

        Connection connection = dataSource.getConnection();

        /*获得数据库连接
        *
        * HikariProxyConnection@173321452 wrapping com.mysql.cj.jdbc.ConnectionImpl@19da993b
        * */
        System.out.println(dataSource.getConnection());

        /*关闭连接*/
        connection.close();
    }

}

运 行 结 果 \color{#0000FF}{运行结果}
1、class com.zaxxer.hikari.HikariDataSource
2、HikariProxyConnection@1789376127 wrapping com.mysql.cj.jdbc.ConnectionImpl@6bcc3f27

由 此 可 以 得 到 s p r i n g 本 身 集 成 了 h i k a r i 数 据 库 连 接 池 \color{#FF00FF}{由此可以得到spring本身集成了hikari数据库连接池} springhikari

修 改 数 据 源 类 型 \color{#0000FF}{修改数据源类型}
spring:
  datasource:
    username: root
    password: woailimin
    url: jdbc:mysql://localhost:3306/game?useUnicode=ture&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 指定数据源类型
    type: com.alibaba.druid.pool.DruidDataSource
运 行 结 果 \color{#0000FF}{运行结果}

使 用 同 一 个 测 试 类 得 到 结 果 为 \color{#FF00FF}{使用同一个测试类得到结果为} 使

1、class com.alibaba.druid.pool.DruidDataSource
2、com.mysql.cj.jdbc.ConnectionImpl@4b0f2299

由 此 可 以 得 到 s p r i n g 中 h i k a r i 数 据 库 连 接 池 替 换 为 d r u i d \color{#FF00FF}{由此可以得到spring中hikari数据库连接池替换为druid} springhikaridruid

d u r i d 配 置 参 数 \color{#0000FF}{durid配置参数} durid
spring:
  datasource:
    username: root
    password: ~~~~~~
    url: jdbc:mysql://localhost:3306/game?useUnicode=ture&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 指定数据源类型
    type: com.alibaba.druid.pool.DruidDataSource

    # springBoot默认是不需要注入这些参数的,需要自己绑定
    # druid 数据源专有配置

    # 缺省值-0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
    initialSize: 5
    # 最小连接池数量
    minIdle: 5
    # 缺省值- 8 最大连接池数量
    maxActive: 20
    # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
    maxWait: 60000
    # 1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接
    # 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
    timeBetweenEvictionRunsMillis: 60000
    # 连接保持空闲而不被驱逐的最小时间
    minEvictableIdleTimeMillis: 30000
    # 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用
    validationQuery: SELECT 1 FROM DUAL
    # 缺省值-false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    testWhileIdle: true
    # 缺省值-true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testOnBorrow: false
    # 缺省值-false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testOnReturn: false
    # 缺省值-false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    poolPreparedStatements: true


    # 配置监控统计拦截的filters; 监控统计:stat; 日志记录:log4j; 防止sql注入:wall
    # 如果允许报错,那么就导入log4j
    # 过滤器
    filters: stat,wall,log4j
    # 缺省值- -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
    maxPoolPreparedStatementPerConnectionSize: 20
    # 连接属性 比如设置一些连接池统计方面的配置
    connectProperties: druid.stat.mergeSql=true;durid.stat.slowSqlMillis=500
    # 合并多个DruidDataSource的监控数据
    useGlobalDataSourceStat: true
d u r i d 配 置 类 \color{#0000FF}{durid配置类} durid

配 置 类 实 例 \color{#0000FF}{配置类实例}

package com.dragon.jdbc.DruidConfig;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.HashMap;

/**
 * Created by jdx on 2022/4/27 下午2:32
 */
@Configuration
public class DruidConfig {
    /*绑定配置文件中的属性*/

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }

    /*后台监控*/
    @Bean
    public ServletRegistrationBean StatViewServlet() {// 相当于web.xml
        /*获得监测路径*/
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");

        /*后台登陆配置用户名以及密码*/
        HashMap<String, String> initParameters = new HashMap<>();
        /*增加配置*/
        initParameters.put("loginUsername","MJL");//其中登陆的key值是确定的不可以修改
        initParameters.put("loginPassword","1314");
        /*允许谁可以访问*/
        initParameters.put("allow","");
        /*禁止谁访问*/
        initParameters.put("MJ","192.133.3.3");

        /*将值放入 设置初始化值*/
        bean.setInitParameters(initParameters);
        return bean;
    }
}
结 果 展 示 \color{#0000FF}{结果展示}

在 浏 览 器 地 址 栏 输 入 : \color{#FF00FF}{在浏览器地址栏输入:} http://localhost:8080/druid/login.html

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/792605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存