导语
  在使用SpringBoot的时候默认情况下提供了若干的数据库连接池,例如(dbcp,dbcp2,tomcat,hikari)等等,当然并不支持我们接下来所说的Druid,Druid是来自与阿里系的一个开源连接池,提供了非常优秀的监控功能。下面就来一起探索一下关于SpringBoot整合Druid的方式。

版本环境

Spring Boot 2.1.6,Druid 1.1.10,JDK1.8

Pom文件

这里提供一个由阿里巴巴提供的SpringBoot关于Druid的整合方式

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--数据库连接池配置--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>

配置文件

spring:datasource:url: jdbc:mysql://192.168.1.66:3306/spring-boot?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverplatform: mysqltype: com.alibaba.druid.pool.DruidDataSource# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大initialSize: 1minIdle: 3maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 30000validationQuery: select 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

编写配置类

package com.nh.haiyan.ordermanager.config;import java.sql.SQLException;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;/*** nihui*/
@Configuration
public class DruidConfiguration {private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);private static final String DB_PREFIX = "spring.datasource";@Beanpublic ServletRegistrationBean druidServlet() {logger.info("init Druid Servlet Configuration ");ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");// IP白名单 (没有配置或者为空,则允许所有访问)servletRegistrationBean.addInitParameter("allow", "");// IP黑名单(共同存在时,deny优先于allow)//servletRegistrationBean.addInitParameter("deny", "192.168.1.100");//控制台管理用户servletRegistrationBean.addInitParameter("loginUsername", "admin");servletRegistrationBean.addInitParameter("loginPassword", "admin");//是否能够重置数据 禁用HTML页面上的“Reset All”功能servletRegistrationBean.addInitParameter("resetEnable", "false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());filterRegistrationBean.addUrlPatterns("/*");filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}@ConfigurationProperties(prefix = DB_PREFIX)class IDataSourceProperties {private String url;private String username;private String password;private String driverClassName;private int initialSize;private int minIdle;private int maxActive;private int maxWait;private int timeBetweenEvictionRunsMillis;private int minEvictableIdleTimeMillis;private String validationQuery;private boolean testWhileIdle;private boolean testOnBorrow;private boolean testOnReturn;private boolean poolPreparedStatements;private int maxPoolPreparedStatementPerConnectionSize;private String filters;private String connectionProperties;@Bean  public DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(url);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);//configurationdatasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (SQLException e) {System.err.println("druid configuration initialization filter: " + e);}datasource.setConnectionProperties(connectionProperties);return datasource;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;}public int getInitialSize() {return initialSize;}public void setInitialSize(int initialSize) {this.initialSize = initialSize;}public int getMinIdle() {return minIdle;}public void setMinIdle(int minIdle) {this.minIdle = minIdle;}public int getMaxActive() {return maxActive;}public void setMaxActive(int maxActive) {this.maxActive = maxActive;}public int getMaxWait() {return maxWait;}public void setMaxWait(int maxWait) {this.maxWait = maxWait;}public int getTimeBetweenEvictionRunsMillis() {return timeBetweenEvictionRunsMillis;}public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;}public int getMinEvictableIdleTimeMillis() {return minEvictableIdleTimeMillis;}public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;}public String getValidationQuery() {return validationQuery;}public void setValidationQuery(String validationQuery) {this.validationQuery = validationQuery;}public boolean isTestWhileIdle() {return testWhileIdle;}public void setTestWhileIdle(boolean testWhileIdle) {this.testWhileIdle = testWhileIdle;}public boolean isTestOnBorrow() {return testOnBorrow;}public void setTestOnBorrow(boolean testOnBorrow) {this.testOnBorrow = testOnBorrow;}public boolean isTestOnReturn() {return testOnReturn;}public void setTestOnReturn(boolean testOnReturn) {this.testOnReturn = testOnReturn;}public boolean isPoolPreparedStatements() {return poolPreparedStatements;}public void setPoolPreparedStatements(boolean poolPreparedStatements) {this.poolPreparedStatements = poolPreparedStatements;}public int getMaxPoolPreparedStatementPerConnectionSize() {return maxPoolPreparedStatementPerConnectionSize;}public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;}public String getFilters() {return filters;}public void setFilters(String filters) {this.filters = filters;}public String getConnectionProperties() {return connectionProperties;}public void setConnectionProperties(String connectionProperties) {this.connectionProperties = connectionProperties;}}}

查看结果

  在本地浏览器中输入http://localhost:8080/druid/login.html
输入用户名admin,密码admin即可查看

效果如下

SpringBoot精通系列-开发案例之配置Druid数据库连接池相关推荐

  1. log4j mysql 异步_spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)...

    一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...

  2. Spring Boot 2.0.5 配置Druid数据库连接池

    配置文件: 配置类: pom文件:

  3. springboot 使用Druid数据库连接池

    Druid 阿里开源的数据库连接池 选择的理由: Druid 经历了阿里双十一的场景,足以可见其性能. Druid 有完整的监控,可以实时监控数据库状态及sql的执行时间. 提供有丰富的监控器,自定义 ...

  4. 阿里巴巴 Druid 数据库连接池监控界面配置的参数解读

    阿里巴巴 Druid 数据库连接池监控界面配置的参数解读 1.可选的配置项 Property Name Default Value Remarks name 存在多个数据源的时候用于识别数据源 jdb ...

  5. Druid数据库连接池监控的使用

    Druid数据库连接池 1. Druid是什么? Druid是Java语言中最好的数据库连接池,由阿里巴巴团队开发.Druid能够提供强大的监控和扩展功能.         github地址为http ...

  6. Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10

    问题描述: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10at com.alibab ...

  7. Druid数据库连接池就这么简单

    前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...

  8. Druid数据库连接池就是这么简单

    前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...

  9. Mysql实现监控数据统计分析:Druid开源分布式系统与阿里巴巴的Druid数据库连接池

    看到Druid很多国内的开发者所熟知的就是阿里巴巴提供的开源数据库连接池工具.如果看了这篇文章还认为Druid仅仅是一个阿里巴巴提供的开源数据库连接池工具那么就错了,它或许指的是用于大数据实时处理的开 ...

最新文章

  1. 从脑电图(EEG)中提取稳定的模式进行识别
  2. Tensorflow Probability 与 TensorFlow 的版本依赖关系
  3. jquery form 的beforeSubmit提交前的回调函数
  4. linux运维技巧,Linux运维需要掌握的17个实用技巧
  5. linux安装weblogic9,linux_weblogic9_安装说明.doc
  6. ​迷“铺地砖”的数学家
  7. 云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台
  8. Docker启动MySql后连接报1251处理方法
  9. Leetcode-5148 Binary Tree Coloring Game(二叉树着色游戏)
  10. python3 json_python3 json模块
  11. 面向初学者的带MVC API的Angular Js Table CRUD MSSQL
  12. 【OCR技术系列之五】自然场景文本检测技术综述(CTPN, SegLink, EAST)
  13. B - I Hate It(单点更新)(区间求最大值)
  14. 单播、多播(组播)和广播解释
  15. 北京大学计算机科学技术研究所研究员万小军:机器写稿技术与应用 | CCF-GAIR 2017...
  16. 【只摘金句】Linux 开发模式带给创业者的启示
  17. biblatex中参考文献期刊名缩写的实现
  18. 微信公众号扫码关注并打开指定页面的解决方案
  19. (区块链溯源)基于Hyperledger Fabric 的农产品区块链溯源方法
  20. 如何关闭Windows Server 2012的IE增强安全配置

热门文章

  1. mysql left a 10_MySQL基础总结,认真看完这篇就够了!!!
  2. 一阶电路暂态响应的结果分析。_【2020考研】南京邮电大学813《电路分析》考试大纲...
  3. 浏览器内核之WebKit 架构与模块
  4. 第 9 章 代码审查制度
  5. DC中的一些命令随笔
  6. JsonView插件
  7. u3d外部资源加载加密
  8. nginx 参数、变量和例子
  9. netatalk,轻松将linux变成你的Mac File Server!!!
  10. Java 集合系列12之 Hashtable详细介绍(源码解析)和使用示例