springboot 配置DRUID数据源具体流程

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

1.修改pom.xml


  
     
   
    mysql
     
   
    mysql-connector-java
   
  
  
     
   
    com.alibaba
     
   
    druid
     
   
    1.0.26
   
  

增加上面的配置。

2.编辑配置数据源代码

package com.neo.conf;
import javax.sql.DataSource;
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 org.springframework.context.annotation.PropertySource;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
@Configuration
@ConfigurationProperties(value = "classpath:druid.properties")
public class DruidConfiguration {
 @Bean(destroyMethod = "close", initMethod = "init")
 @ConfigurationProperties(prefix = "spring.datasource")
 public DataSource druidDataSource() {
   DruidDataSource druidDataSource = new DruidDataSource();
   return druidDataSource;
 }
 /**
  * 注册一个StatViewServlet
  * @return
  */
 @Bean
 public ServletRegistrationBean druidStatViewServlet(){
   //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
   ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
   //添加初始化参数:initParams
   //白名单:
   servletRegistrationBean.addInitParameter("allow","127.0.0.1,192.168.31.77");
   //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
   servletRegistrationBean.addInitParameter("deny","192.168.1.73");
   //登录查看信息的账号密码.
   servletRegistrationBean.addInitParameter("loginUsername","admin");
   servletRegistrationBean.addInitParameter("loginPassword","123456");
   //是否能够重置数据.
   servletRegistrationBean.addInitParameter("resetEnable","false");
   return servletRegistrationBean;
 }
 /**
  * 注册一个:filterRegistrationBean
  * @return
  */
 @Bean
 public FilterRegistrationBean druidStatFilter(){
   FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
   //添加过滤规则.
   filterRegistrationBean.addUrlPatterns("/*");
   //添加不需要忽略的格式信息.
   filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
   return filterRegistrationBean;
 }
}

3.编写配置文件 druid.properties

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mycine?useUnicode=true&characterEncoding=utf8&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=root
#--------------------------
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=50
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=false
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#spring.datasource.filters=stat,wall,log4j
spring.datasource.filters=stat
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

4.启动程序查看效果

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/15612.html

(0)
晴川运维晴川运维
上一篇 2025年10月19日
下一篇 2025年10月19日

相关推荐

  • 如何让网站不下线而从 Redis 2 迁移到 Redis 3

    我们在 Sky Betting&Gaming 中使用 Redis 作为共享内存缓存,用于那些需要跨 API 服务器或者 Web 服务器鉴别令牌之类的操作。在 Core Tribe …

    Linux系统 2025年10月8日
  • Linux运维面试集锦

    本篇文章重点为大家分享一下Linux运维人员面试常见的问题及答案,准备参加Linux运维面试的小伙伴们是否做好了面试准备,今天在这里小编继续为大家分享一些Linux运维人员面试中的…

    Linux系统 2025年6月8日
  • CoreOS具体安装方法

    CoreOS是一个基于Linux 内核的轻量级操作系统,为了计算机集群的基础设施建设而生,专注于自动化,轻松部署,安全,可靠,规模化,CoreOS作为Docker生态圈中的重要一员…

    Linux系统 2025年10月27日
  • 介绍一款终端模拟器:eDEX-UI

    eDEX-UI 是一个全屏且跨平台、可定制的终端模拟器,具有先进的监控和触摸屏支持。它的外观类似科幻的计算机界面。在保持未来感的外观和感觉的同时,它努力保持一定的功能水平并可用于现…

    Linux系统 2025年7月11日
  • Linux中常用的监控工具

    本篇文章重点为大家讲解一下Linux中常用的监控工具,有需要的小伙伴可以参考一下。 1. iotop 如果你想知道某些进程使用了多少你宝贵的 I/O 资源,那么就使用 iotop …

    Linux系统 2025年6月11日
  • 详解TCP长连接和短连接

    HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如…

    Linux系统 2025年6月8日
  • Linux下XWiki的安装和使用

    XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台,是一个具有强大的扩展功能(如在页面嵌入脚本),集成插件以及高度模块化架构的专业wiki系统,下面为大家…

    Linux系统 2025年6月8日
  • Github 访问慢的若干解决方法

    我们经常要用到github,但是速度很慢,有时会有超时现象,十分地影响工作效率,可以考虑采取如下措施 1 使用 Github Mirror 下载 直接在 GitHub 仓库前面拼接…

    Linux系统 2025年6月12日
  • 详解日志分析工具GoAccess

    GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。能为系统管理员提…

    Linux系统 2025年6月4日
  • Linux grep命令详解:查找文件内容

    很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用 grep 命令。 grep 命令作为 Linux 文本处理三剑客的一员,另…

    Linux系统 2025年10月11日

发表回复

登录后才能评论