javascript
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=5003.利用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
原因是: 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 解决(含配置源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ClickHouse【环境搭建 01】L
- 下一篇: SpringBoot 集成 clickh