IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> spring-boot-整合Druid数据源-06 -> 正文阅读

[Java知识库]spring-boot-整合Druid数据源-06

简 介 \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.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.9</version>
 </dependency>
<!--log4j 和 Druid对应-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
</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
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 11:57:32  更:2022-04-29 12:01:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:08:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码