当前位置: 首页 > news >正文

SpringBoot-数据访问之Druid

Druid数据源

1. 官方地址

  • GitHub:https://github.com/alibaba/druid
  • 中文文档:常见问题 · alibaba/druid Wiki · GitHub
  • springboot的使用:druid/druid-spring-boot-starter at master · alibaba/druid · GitHub

2. 导入依赖

  • Spring Boot 2.5.2版本导入下面的druid 1.1.17依赖并不能使用监控功能
  • 使用相同版本的druid-spring-boot-starter可以使用监控功能。
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version>
</dependency>

3. XML方式配置数据源

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="20" /><property name="initialSize" value="1" /><property name="maxWait" value="60000" /><property name="minIdle" value="1" /><property name="timeBetweenEvictionRunsMillis" value="60000" /><property name="minEvictableIdleTimeMillis" value="300000" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="poolPreparedStatements" value="true" /><property name="maxOpenPreparedStatements" value="20" />
</bean>

4. 配置类方式配置数据源

//默认的自动配置是判断容器中没有才会配@ConditionalOnMissingBean(DataSource.class)
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource dataSource() throws SQLException {DruidDataSource druidDataSource = new DruidDataSource();//要么ConfigurationProperties配置文件配置,要么手动set//druidDataSource.setUrl();//druidDataSource.setUsername();//druidDataSource.setPassword();//wall是加入监控防火墙//stat是加入监控统计功能//多个值用","分割druidDataSource.setFilters("stat,wall");druidDataSource.setMaxActive(10);return druidDataSource;
}

5. StatViewServlet的用途

  • 内置监控页面的首页是/druid/index.html
  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API
//配置 druid的监控页功能
@Bean
public ServletRegistrationBean statViewServlet(){StatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//监控页登录用户registrationBean.addInitParameter("loginUsername","admin");registrationBean.addInitParameter("loginPassword","123456");return registrationBean;
}

6. StatFilter

  • 用于统计监控信息;如SQL监控、URI监控
  • 系统中所有filter

别名

Filter类名

default

com.alibaba.druid.filter.stat.StatFilter

stat

com.alibaba.druid.filter.stat.StatFilter

mergeStat

com.alibaba.druid.filter.stat.MergeStatFilter

encoding

com.alibaba.druid.filter.encoding.EncodingConvertFilter

log4j

com.alibaba.druid.filter.logging.Log4jFilter

log4j2

com.alibaba.druid.filter.logging.Log4j2Filter

slf4j

com.alibaba.druid.filter.logging.Slf4jLogFilter

commonlogging

com.alibaba.druid.filter.logging.CommonsLogFilter

//WebStatFilter 用于采集web-jdbc关联监控的数据。
@Bean
public FilterRegistrationBean webStatFilter(){WebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//过滤所有filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除过滤的路径filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;
}

Druid-starter自动配置原理

1. 引入starter依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version>
</dependency>

2. DruidDataSourceAutoConfigure

  • 配置文件配置 spring.datasource.druid 或 spring.datasource
  • 需要配置在springboot官方数据源之前,也就是在spring-boot-starter-data-jdbc之前引入依赖

3. DruidSpringAopConfiguration.class

  • 监控SpringBean的
  • 配置项:spring.datasource.druid.aop-patterns

4. DruidStatViewServletConfiguration.class

  • 监控页的配置:spring.datasource.druid.stat-view-servlet;默认开启

5. DruidWebStatFilterConfiguration.class

  • web监控配置;spring.datasource.druid.web-stat-filter;默认开启

6. DruidFilterConfiguration.class

  • 所有Druid自己filter的配置

7. 配置文件示例

spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.my.admin.*  #监控SpringBeanfilters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)stat-view-servlet:   # 配置监控页功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter:  # 监控webenabled: trueurlPattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat:    # 对上面filters里面的stat的详细配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false
http://www.dtcms.com/a/521134.html

相关文章:

  • 算法 vs 社区:Pump 与 FourMeme 的增长机制之战
  • 「PPG信号处理——(2)脉搏波信号刺激前后RMSSD心率变异性研究」2025年10月23日
  • 学网站开发可以创业吗学校网站英文
  • 哈尔滨企业自助建站php做的网站手机能看到
  • Ubuntu关于串口的操作
  • 电子商务网站建设与维护考试提供郑州网站建设
  • 内蒙建设厅网站怎么查建筑电工证门户网站底部
  • 全面掌握PostgreSQL关系型数据库 日志配置 笔记07
  • 工厂做哪个网站好鼓楼微网站开发
  • 江门网站建设方案推广wordpress地址改错了
  • 什么叫网站外链如何做企业组织架构图
  • 网页与网站设计工作内容wordpress的登陆地址修改
  • 为什么在数据库表中存储的数字是20.02,但是在前端读取的时候就会呈现20.0200000000000
  • 手机网站的文本排版是怎么做的百度一下就知道官网
  • XSS漏洞攻击 (跨站脚本攻击)
  • 龙之向导外贸经理人网站云南省住房和城乡建设局网站
  • 高端品牌网站建设九五网络家居网站模板
  • 第16章:Spring AI Alibaba Graph框架— 人类反馈
  • 大连网站制作推广免费送网站
  • 泰州城乡建设局网站电子商务网站建设利益分析
  • CORDIC三角计算技术
  • Miniconda介绍与安装
  • 服务器硬件设备都有哪些?
  • 中山市建设局网站窗口电话号码wordpress时间轴插件
  • JS逆向 - spiderdemo T6题(JSVMP喵喵盾、protobuf、css)纯算
  • 做怎样的企业网站480元做网站
  • 佛山做外贸网站开发一个电商网站
  • 我的世界做mc壁纸的网站网站建设背景是什么
  • MySQL Galera Cluster部署如何实现负载均衡和高可用
  • 唐山哪个公司做网站wordpress 新增页面