Druid是Java语言中最好的数据库连接池,在连接池之外,还提供了非常优秀的监控功能。

下面来说明如何在 Spring Boot 中配置使用Druid

1、添加Maven依赖 (或jar包)

  1. <!--druid-->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid</artifactId>
  5. <version>1.0.11</version>
  6. </dependency>

2、配置数据源相关信息

  1. ####################数据源配置####################
  2. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  3. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  4. spring.datasource.url=jdbc:mysql://localhost:3306/springsea?useUnicode=true&characterEncoding=utf-8
  5. spring.datasource.username=root
  6. spring.datasource.password=root
  7.  
  8. # 初始化大小,最小,最大
  9. spring.datasource.initialSize=5
  10. spring.datasource.minIdle=5
  11. spring.datasource.maxActive=20
  12. # 配置获取连接等待超时的时间
  13. spring.datasource.maxWait=60000
  14. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  15. spring.datasource.timeBetweenEvictionRunsMillis=60000
  16. # 配置一个连接在池中最小生存的时间,单位是毫秒
  17. spring.datasource.minEvictableIdleTimeMillis=300000
  18. spring.datasource.validationQuery=SELECT 1 FROM DUAL
  19. spring.datasource.testWhileIdle=true
  20. spring.datasource.testOnBorrow=false
  21. spring.datasource.testOnReturn=false
  22. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  23. spring.datasource.filters=stat,wall,log4j
  24. # 通过connectProperties属性来打开mergeSql功能(参数不同的sql合并统计)、慢SQL记录(执行时间长的sql)
  25. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  26. # 合并多个DruidDataSource的监控数据
  27. #spring.datasource.useGlobalDataSourceStat=true

详细配置参考:spring配置数据库连接池druid

3、创建配置文件

目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池。

由于Druid暂时不在Spring Boot中的直接支持,故需要进行配置信息的定制。

  1. package com.xzh.config;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import javax.sql.DataSource;
  6.  
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9.  
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  12. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  13. import org.springframework.context.annotation.Bean;
  14. import org.springframework.context.annotation.Configuration;
  15. import org.springframework.context.annotation.Primary;
  16.  
  17. import com.alibaba.druid.pool.DruidDataSource;
  18. import com.alibaba.druid.support.http.StatViewServlet;
  19. import com.alibaba.druid.support.http.WebStatFilter;
  20.  
  21. /**
  22. * Created by xiangzh on 2017/12/5.
  23. */
  24. @Configuration
  25. public class DruidConfig {
  26.  
  27. private Logger logger = LoggerFactory.getLogger(DruidConfig.class);
  28.  
  29. @Value("${spring.datasource.url}")
  30. private String dbUrl;
  31.  
  32. @Value("${spring.datasource.username}")
  33. private String username;
  34.  
  35. @Value("${spring.datasource.password}")
  36. private String password;
  37.  
  38. @Value("${spring.datasource.driver-class-name}")
  39. private String driverClassName;
  40.  
  41. @Value("${spring.datasource.initialSize}")
  42. private int initialSize;
  43.  
  44. @Value("${spring.datasource.minIdle}")
  45. private int minIdle;
  46.  
  47. @Value("${spring.datasource.maxActive}")
  48. private int maxActive;
  49.  
  50. @Value("${spring.datasource.maxWait}")
  51. private int maxWait;
  52.  
  53. @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
  54. private int timeBetweenEvictionRunsMillis;
  55.  
  56. @Value("${spring.datasource.minEvictableIdleTimeMillis}")
  57. private int minEvictableIdleTimeMillis;
  58.  
  59. @Value("${spring.datasource.validationQuery}")
  60. private String validationQuery;
  61.  
  62. @Value("${spring.datasource.testWhileIdle}")
  63. private boolean testWhileIdle;
  64.  
  65. @Value("${spring.datasource.testOnBorrow}")
  66. private boolean testOnBorrow;
  67.  
  68. @Value("${spring.datasource.testOnReturn}")
  69. private boolean testOnReturn;
  70.  
  71. @Value("${spring.datasource.filters}")
  72. private String filters;
  73.  
  74. @Value("${spring.datasource.connectionProperties}")
  75.    private String connectionProperties;
  76.  
  77. @Primary
  78. @Bean(name = "dataSource")
  79. public DataSource dataSource() {
  80. DruidDataSource datasource = new DruidDataSource();
  81. datasource.setUrl(this.dbUrl);
  82. datasource.setUsername(username);
  83. datasource.setPassword(password);
  84. datasource.setDriverClassName(driverClassName); //configuration
  85. datasource.setInitialSize(initialSize);
  86. datasource.setMinIdle(minIdle);
  87. datasource.setMaxActive(maxActive);
  88. datasource.setMaxWait(maxWait);
  89. datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  90. datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  91. datasource.setValidationQuery(validationQuery);
  92. datasource.setTestWhileIdle(testWhileIdle);
  93. datasource.setTestOnBorrow(testOnBorrow);
  94. datasource.setTestOnReturn(testOnReturn);
  95. try {
  96. datasource.setFilters(filters);
  97. } catch (SQLException e) {
  98. logger.error("druid configuration initialization filter", e);
  99. }
  100. datasource.setConnectionProperties(connectionProperties);
  101. return datasource;
  102. }
  103.  
  104. /**
  105. * 注册一个StatViewServlet * @return
  106. */
  107. @Bean
  108. public ServletRegistrationBean DruidStatViewServle2() {
  109. ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid333/*"); //添加初始化参数:initParams
  110. /** 白名单,如果不配置或value为空,则允许所有 */
  111. servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.0.0.1"); /** 黑名单,与白名单存在相同IP时,优先于白名单 */
  112. servletRegistrationBean.addInitParameter("deny", "192.0.0.1"); /** 用户名 */
  113. servletRegistrationBean.addInitParameter("loginUsername", "xiangzhenhai"); /** 密码 */
  114. servletRegistrationBean.addInitParameter("loginPassword", "xzh335645"); /** 禁用页面上的“Reset All”功能 */
  115. servletRegistrationBean.addInitParameter("resetEnable", "false");
  116. return servletRegistrationBean;
  117. }
  118.  
  119. /**
  120. * 注册一个:WebStatFilter * @return
  121. */
  122. @Bean
  123. public FilterRegistrationBean druidStatFilter2() {
  124. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); /** 过滤规则 */
  125. filterRegistrationBean.addUrlPatterns("/*"); /** 忽略资源 */
  126. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid333/*");
  127. return filterRegistrationBean;
  128. }
  129. }

4、启动项目,查看druid监控

参考:

Spring Boot 使用 Druid 和监控配置

Spring Boot Druid数据源配置

Springboot入门2-配置druid的更多相关文章

  1. SpringBoot入门之基于Druid配置Mybatis多数据源

    上一篇了解了Druid进行配置连接池的监控和慢sql处理,这篇了解下使用基于基于Druid配置Mybatis多数据源.SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,Sp ...

  2. SpringBoot入门之集成Druid

    Druid:为监控而生的数据库连接池.这篇先了解下它的简单使用,下篇尝试用它做多数据源配置.主要参考:https://github.com/alibaba/druid/wiki/常见问题 https: ...

  3. SpringBoot 入门及配置

    1.首先创建Maven文件,右键单击鼠标,others搜索Maven,点击Maven Project 2.点击下一步,打上勾下一步,输入包名和项目名称 3.第三步修改pom.xml导入Maven依赖M ...

  4. springboot成神之——springboot入门使用

    springboot创建webservice访问mysql(使用maven) 安装 起步 spring常用命令 spring常见注释 springboot入门级使用 配置你的pom.xml文件 配置文 ...

  5. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  6. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)

    1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...

  7. springboot配置Druid监控

    整体步骤: (1)    ——   Druid简单介绍,具体看官网: (2)     —— 在pom.xml配置druid依赖包: (3)    ——  配置application.propertie ...

  8. SpringBoot 三种方式配置 Druid(包括纯配置文件配置)

    记录一下在项目中用纯 YML(application.yml 或者 application.properties)文件.Java 代码配置 Bean 和注解三种方式配置 Alibaba Druid 用 ...

  9. SpringBoot入门(五)——自定义配置

    本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...

随机推荐

  1. 383. Ransom Note【easy】

    383. Ransom Note[easy] Given an arbitrary ransom note string and another string containing letters f ...

  2. 使用pycharm手动搭建python语言django开发环境(三) 使用django的apps应用 添加应用静态文件

    1)在django 工程目录中使用cmd命令行 敲入"python manage.py startapp app名称(例子为blog)" 2)在django工程目录中应该生成了bl ...

  3. java json字符串和对象互转

    /** * Created by admin on 2017/7/26. */ public class NewPost { private String title; private String ...

  4. Ubuntu安装Sun JDK

    Ubuntu 14.04 下安装 Sun JDK 1.8.0 1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8- ...

  5. FineReport实现java报表多级上报的效果图

    Java报表-上报流程管理 Java报表-上报任务管理 Java报表-我的上报任务 Java报表-系统说明

  6. 配置LANMP环境(2)-- 安装ifconfig命令与安装SecureCRT

    一.安装ifconfig命令 yum whatprovides ifconfig yum install net-tools 安装这个命令就是为了查看虚拟机的ip地址,SecureCRT连接必须要ip ...

  7. 【Ubuntu安装,ATX基于uiautomator2】之安装步骤

    Ubuntu系统下安装uiautomator2步骤: 1.安装命令: pip install --upgrade --pre uiautomator2 但是报错: Command "pyth ...

  8. CentOS下使用MyTop实时监控MySQL

    CentOS下使用MyTop实时监控MySQL MyTop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/ MyTop安装 $ yum -y install ...

  9. 使用nginx cache缓存网站数据实践

    Nginx本身就有缓存功能,能够缓存静态对象,比如图片.CSS.JS等内容直接缓存到本地,下次访问相同对象时,直接从缓存即可,无需访问后端静态服务器以及存储存储服务器,可以替代squid功能. 1   ...

  10. mac os 10.10.4 上安装mysql5.6.26

    在 Mac 系统上, 安装 MySQL Server 通常是用 DMG 包在图形化界面下按提示安装, 此外 MySQL 还提供了 Compressed TAR Archive 二进制包安装方式, 即免 ...