springboot使用yml方式配置Druid连接池_druidxadatasource 的yaml配置怎么生效-程序员宅基地

技术标签: druid  Spring Boot  springboot  

官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
使用数据库连接池,省略(复用)了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁时的四次握手),从而在性能上得到了提高。

使用了数据库连接池的机制:
(1) 程序初始化时创建连接池
(2) 使用时向连接池申请可用连接
(3) 使用完毕,将连接返还给连接池
(4) 程序退出时,断开所有连接,并释放资源

什么是Druid连接池

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

https://github.com/alibaba/druid

1、引入pom依赖包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.20</version>
</dependency>

Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录

<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

2、在yml里面添加相关配置

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
        username: root
        # 1.配置生成的password
        password: 123456
        #   Druid数据源配置
        # 初始连接数
        initialSize: 5
        # 最小连接池数量
        minIdle: 10
        # 最大连接池数量
        maxActive: 20
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
        # 配置一个连接在池中最大生存的时间,单位是毫秒
        maxEvictableIdleTimeMillis: 900000
        # 配置检测连接是否有效
        validationQuery: SELECT 1 FROM DUAL
        #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
        testWhileIdle: true
        #配置从连接池获取连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
        testOnBorrow: false
        #配置向连接池归还连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
        testOnReturn: false
        #打开PsCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,log4j
        #合并多个DruidDatasource的监控数据
        useGlobalDataSourceStat: true
        #通过connectProperties属性来打开mergesql功能罗慢sQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;

3、自定义DruidConfig

package com.example.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
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.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author HeYunHui
 * @create 2020/10/23 10:25
 */
@Configuration
public class DruidConfig {
    
    //加载application.yaml中的Druid配置
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
    
        return  new DruidDataSource();
    }

    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
    
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<>();

        initParams.put("loginUsername","root");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.168.15.21");

        bean.setInitParameters(initParams);
        return bean;
    }

    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
    
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return  bean;
    }
}

然后运行项目,访问http://localhost:8080/druid
登录用户名和密码为DruidConfig里面设置好的
在这里插入图片描述
当你在对项目中的数据进行操作时,druid都会显示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hyh17808770899/article/details/109242099

智能推荐

最大熵模型(Maximum Etropy)—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。...-程序员宅基地

文章浏览阅读166次。引入1:随机变量函数的分布 给定X的概率密度函数为fX(x), 若Y = aX, a是某正实数,求Y得概率密度函数fY(y).解:令X的累积概率为FX(x), Y的累积概率为FY(y).则FY(y) = P(Y <= y) = P(aX <= y) = P(X <= y/a) =FX(y/a),则 fY(y) = d(FX(y/a)) / d..._风险承受倾向 条件熵

王爽汇编语言 思维导图_汇编语言思维导图-程序员宅基地

文章浏览阅读1.1k次。简要将关注的内容整理_汇编语言思维导图

outlook邮箱签名设置_outlook插入签名-程序员宅基地

文章浏览阅读2w次,点赞2次,收藏3次。1、打开电脑左下角,“开始”按钮,选择“所有程序”。2、选择“Microsoft Office”,打开“Microsoft Outlook”软件。3、打开软件后,选择Outlook软件左上角的“文件”,打开“选项”按钮。4、在Outlook选项窗口中,选择“邮件”按钮,找到“创建或修改邮件的签名”,打开“签名”按钮。5、在签名和信纸窗口,找到并打开“新建”按钮。在下面的编辑签名里面,添加需要的签名..._outlook插入签名

linux自动登录gdm,GDM实现开机自动登录Icewm窗口管理器-程序员宅基地

文章浏览阅读989次。在控制台下面敲startx太烦人了,偶用自己的机器,根本用不着密码,总是感觉开机能够自动登录桌面最好,最近上网搜了一下,发现最简单的办法还是用gdm.1.用rcconf设置开启gdm服务,进入gdm登录界面后点选项,配置登录管理器,按提示输入root的密码,这时就可以对gdm进行配置了,点安全-启用自动登录,选取需自动登录的用户,重启,我们就可以自动登入默认的窗口管理器了。2.现在的问题是.xin..._gdm 自动登录

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-程序员宅基地

文章浏览阅读111次。Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈_linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

值得学习的python项目-程序员宅基地

文章浏览阅读107次。此网站整理的2014年值得一学的pytho项目,http://pycoders.com/2014/项目资源都在github上,python程序员进阶必备。就当作2015年的计划吧。先列表,再对号Projects1. robobrowserA library forwebscraping built on Requests and BeautifulSoup. Like Me..._值得学习的python库

随便推点

Sony x85e android tv,Android-Java-Thread的使用-程序员宅基地

文章浏览阅读52次。main线程跑三个任务:packageandroid.java.thread2;classDemo {privateString name;publicDemo(String name) {this.name =name;}public voidshowMethod() {for (int i = 0; i < 10; i++) {System.out.println("Demo showM...

ETL工具——kettle实现简单的数据迁移_kettle迁移webserver服务-程序员宅基地

文章浏览阅读1.2k次。1、Kettle概念Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。2.安装与启动KETTLE本身是绿色安装版软件,直接对压缩包解压后即_kettle迁移webserver服务

快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解-程序员宅基地

文章浏览阅读1.1k次,点赞26次,收藏13次。环信 Chatroom UIKit 采用最新的 UI 框架和开发语言,可以快速上手。同时,该 UIKit 对标国际主流的社交应用,提供开箱即用的社交组件,一方面,可以快速将其集成到自己的应用程序中,另一方面还支持对功能组件进行自定义,灵活定制符合自身需求的聊天室应用。弹幕消息是聊天室最为核心的功能。环信 Chatroom UIKit 支持业内主流的消息样式,包括发送时间显示、用户身份标识、用户头像、昵称等元素,提供极为灵活的弹幕消息自定义能力。还可以根据业务需要,通过开关控件控制所有元素的显示或隐藏。

14_Shell语言———for循环实例演示(一)-程序员宅基地

文章浏览阅读145次。例1.写一个脚本,使用for循环创建目录/tmp/1.dir,/tmp/2.dir和/tmp/3.dir,并将它们的权限均修改为750;使用mkdir命令创建目录,使用chmod命令修改权限,故此脚本可以写成:#!/bin/bashforDirNamein/tmp/1.dir/tmp/2.dir/tmp/3.dir;domkdir$DirNam..._使用for循环在目录exam下循环创建文件1.sh,2.sh

鼠标移动,按下,松开记录坐标和偏移量事件_通过鼠标移动事件处理,获取鼠标在 x、y 方向的偏移 量-程序员宅基地

文章浏览阅读3.5k次。body{margin: 0;padding: 0;}div{width: 300px;height: 300px;border: 1px solid #000000;margin-top: 20px;margin-left: 30px;}//判断鼠标是否按下var isDown = false;//实时监听鼠标位置var m_通过鼠标移动事件处理,获取鼠标在 x、y 方向的偏移 量

JAVA中级(十五)AJAX异步请求,页面局部刷新.JSON数据交互_使用异步数据交互方式实现页面的局部更新;利用ajax函数链接到json数据文件,要求使-程序员宅基地

文章浏览阅读1.6k次,点赞6次,收藏11次。AJAXhttp请求一般有两种。一种是form表单的submit.还有一个就是AJAX请求.前者请求会刷新整个页面。AJAX请求则是局部刷新.AJAX技术是一种异步请求技术。它在web中主要使用在页面的局部刷新。比如某个视频网站提供了推荐视频的刷新按钮。点击它只会刷新推荐视频列表而不会刷新正在播放的视频。随着这个前后端的分离和众多优秀的前端框架。现在越来越多的项目都只有AJAX请求。1,J..._使用异步数据交互方式实现页面的局部更新;利用ajax函数链接到json数据文件,要求使

推荐文章

热门文章

相关标签