What

Druid是一个JDBC组件,它包括三部分:
• DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
• DruidDataSource 高效可管理的数据库连接池。
• SQLParser

Why

• 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
• 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
• 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
• SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
• 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

USE

1.依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version>
</dependency>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

2.配置

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8username: rootpassword: root# 数据源选择type: com.alibaba.druid.pool.DruidDataSource# Spring Boot 默认是不注入这些属性值的,需要自己绑定# 数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4jfilters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3.利用druid性能监控

@Configuration
public class DruidConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}@Beanpublic ServletRegistrationBean druidServlet() { //后台监控ServletRegistrationBean<StatViewServlet> statViewServletRegistration = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");HashMap<String, String> initParameters = new HashMap<>(8);//druid web登录验证initParameters.put("loginUsername", "admin");initParameters.put("loginPassword", "123");//允许访问initParameters.put("allow", "");//禁止访问//initParameters.put("guest", "127.0.0.1");statViewServletRegistration.setInitParameters(initParameters);return statViewServletRegistration;}@Beanpublic FilterRegistrationBean filterRegistrationBean() { //filter拦截FilterRegistrationBean<WebStatFilter> webStatFilterRegistrationBean = new FilterRegistrationBean<>(new WebStatFilter());webStatFilterRegistrationBean.addUrlPatterns("/*");webStatFilterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,*.html");return webStatFilterRegistrationBean;}
}

启动报错:
Failed to bind properties under ‘spring.datasource’ to javax.sql.DataSource

2021-07-09 10:46:47.780  WARN 15072 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'druidDataSource': Could not bind properties to 'DataSource' : prefix=spring.datasource, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.datasource' to javax.sql.DataSource
2021-07-09 10:46:47.781  INFO 15072 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]

原因是: filters: stat,wall,log4j 配置了log4j,去掉filters的log4j或在依赖里加入log4j即可解决。
4.druid Web监控
http://localhost:8080/druid/login.html 登录后可查询监控信息。

SpringBoot 集成 druid 监控数据库报错 Failed to bind properties under ‘xxxx‘ to javax.sql.DataSource 解决(含配置源码)相关推荐

  1. 启动项目报错 Failed to bind properties under

    报错信息: Description:Failed to bind properties under 'mapper.mappers' to java.util.List<java.lang.Cl ...

  2. spring-cloud-gateway报错Failed to bind properties under ‘‘ to org.springframework.cloud.gateway.handle

    目录 报错信息 解决办法 原因 错误示范 正确示范 解决办法 报错信息 如果是动态刷新路由报如下错误的话: reactor.core.Exceptions$ErrorCallbackNotImplem ...

  3. SpringBoot集成Druid和数据库密码加密

    Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...

  4. Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration

    Springboot 集成 Activiti时启动报错! org.springframework.beans.factory.BeanCreationException: Error creating ...

  5. springboot集成druid监控

    springboot集成druid监控 引入pom依赖 <!-- druid数据库连接池 --> <dependency><groupId>com.alibaba& ...

  6. idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法

    idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法 在 C:\Users\Administrator\AppData\Roamin ...

  7. Springboot 优雅的处理数据库报错信息

    目录 完整性约束报错处理 测试实例 邮箱字段被占用 账号被占用 原理 Duplicate entry 'xxx' for key 'xxxx' 平时我们遇到 mysql 报错的时候很难处理,例如字段重 ...

  8. 关于springboot项目连接oracle数据库报错 ORA01017的改正

    拉取的项目本身用的是mysql数据库,改用orcl数据库,引入 驱动,连接时报ORA01017 ,确认用户名和密码是正确的.查看报错,之前有druid驱动,注释了就不报错了.

  9. 报错Failed to initialize JPA EntityManagerFactory: Unable to create requested service解决方法

    数据库没启动,启动数据库就可以解决问题. 启动了数据库,账号密码设置不对也会报此错误. 数据库启动有问题的见本人另一篇博客~ 启动MySQL:net start mysql出现问题+本地Mysql忘记 ...

最新文章

  1. R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
  2. SonarQube4.4+Jenkins进行代码检查实例之二
  3. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式
  4. 使用镜像源安装EASY_INSTALL和PIP教程
  5. python语法学习_Python学习1——语法
  6. matlab gui实例_App Designer 自学实例8
  7. python实现输入三角形边长自动作图求面积案例
  8. java 共享session_java session共享
  9. java试卷_Java测试题及答案(Java干货完整试卷)
  10. display:block jquery.sort()
  11. 【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)
  12. Python常用的19个工具包汇总
  13. iOS 新浪微博-1.1框架升级
  14. 如何实现数据持久性保障机制
  15. 应用统计学考研笔记1:数据整理与抽样
  16. 联通用户取消plus黄金会员自动续费
  17. 90天减重30斤的经验分享
  18. ImageMagick将多张图片拼接成一张图片_如何将多张图片排列在一张图片呢?学会这两种技巧,轻松搞定...
  19. html屏幕滚动事件监听,JQuery监听页面滚动事件
  20. make: 放弃循环依赖 问题解决(3d 重建)

热门文章

  1. ECshop 数据库表结构
  2. 五、MongoDB的索引
  3. 让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
  4. cmd 关闭进程及查看本机端口
  5. java 气泡 提示插件_Java气泡提示功能实现
  6. mysql 5.5.37 my.cnf,linux安装最新mysql5.5,my.cnf找不到解决办法
  7. 目前流行的装修风格_当下最流行的十大装修风格。目前主流的装修风格前十
  8. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
  9. mysql踢掉登录用户_centos 强制踢掉某登录用户的方法
  10. python concat去除重复值语句_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...