SpringBoot 集成 druid 监控数据库报错 Failed to bind properties under ‘xxxx‘ to javax.sql.DataSource 解决(含配置源码)
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 解决(含配置源码)相关推荐
- 启动项目报错 Failed to bind properties under
报错信息: Description:Failed to bind properties under 'mapper.mappers' to java.util.List<java.lang.Cl ...
- spring-cloud-gateway报错Failed to bind properties under ‘‘ to org.springframework.cloud.gateway.handle
目录 报错信息 解决办法 原因 错误示范 正确示范 解决办法 报错信息 如果是动态刷新路由报如下错误的话: reactor.core.Exceptions$ErrorCallbackNotImplem ...
- SpringBoot集成Druid和数据库密码加密
Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...
- Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration
Springboot 集成 Activiti时启动报错! org.springframework.beans.factory.BeanCreationException: Error creating ...
- springboot集成druid监控
springboot集成druid监控 引入pom依赖 <!-- druid数据库连接池 --> <dependency><groupId>com.alibaba& ...
- idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法
idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法 在 C:\Users\Administrator\AppData\Roamin ...
- Springboot 优雅的处理数据库报错信息
目录 完整性约束报错处理 测试实例 邮箱字段被占用 账号被占用 原理 Duplicate entry 'xxx' for key 'xxxx' 平时我们遇到 mysql 报错的时候很难处理,例如字段重 ...
- 关于springboot项目连接oracle数据库报错 ORA01017的改正
拉取的项目本身用的是mysql数据库,改用orcl数据库,引入 驱动,连接时报ORA01017 ,确认用户名和密码是正确的.查看报错,之前有druid驱动,注释了就不报错了.
- 报错Failed to initialize JPA EntityManagerFactory: Unable to create requested service解决方法
数据库没启动,启动数据库就可以解决问题. 启动了数据库,账号密码设置不对也会报此错误. 数据库启动有问题的见本人另一篇博客~ 启动MySQL:net start mysql出现问题+本地Mysql忘记 ...
最新文章
- R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
- SonarQube4.4+Jenkins进行代码检查实例之二
- Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式
- 使用镜像源安装EASY_INSTALL和PIP教程
- python语法学习_Python学习1——语法
- matlab gui实例_App Designer 自学实例8
- python实现输入三角形边长自动作图求面积案例
- java 共享session_java session共享
- java试卷_Java测试题及答案(Java干货完整试卷)
- display:block jquery.sort()
- 【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)
- Python常用的19个工具包汇总
- iOS 新浪微博-1.1框架升级
- 如何实现数据持久性保障机制
- 应用统计学考研笔记1:数据整理与抽样
- 联通用户取消plus黄金会员自动续费
- 90天减重30斤的经验分享
- ImageMagick将多张图片拼接成一张图片_如何将多张图片排列在一张图片呢?学会这两种技巧,轻松搞定...
- html屏幕滚动事件监听,JQuery监听页面滚动事件
- make: 放弃循环依赖 问题解决(3d 重建)
热门文章
- ECshop 数据库表结构
- 五、MongoDB的索引
- 让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
- cmd 关闭进程及查看本机端口
- java 气泡 提示插件_Java气泡提示功能实现
- mysql 5.5.37 my.cnf,linux安装最新mysql5.5,my.cnf找不到解决办法
- 目前流行的装修风格_当下最流行的十大装修风格。目前主流的装修风格前十
- 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
- mysql踢掉登录用户_centos 强制踢掉某登录用户的方法
- python concat去除重复值语句_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...