做微商童装网站,网络推广招聘信息怎么写,百度搜索简洁版网址,网站开发技术是什么文章目录 前言一、启动器二、配置1.JDBC 配置2.连接池配置3. 监控配置 三、配置多数据源1. 添加配置2. 创建数据源 四、配置 Filter1. 配置Filter2. 可配置的Filter 五、获取 Druid 的监控数据六、案例1. 问题2. 引入库3. 配置4. 配置类5. 测试类6. 测试结果 七、案例 ( 推荐 )… 文章目录 前言一、启动器二、配置1.JDBC 配置2.连接池配置3. 监控配置 三、配置多数据源1. 添加配置2. 创建数据源 四、配置 Filter1. 配置Filter2. 可配置的Filter 五、获取 Druid 的监控数据六、案例1. 问题2. 引入库3. 配置4. 配置类5. 测试类6. 测试结果 七、案例 ( 推荐 ) \color{#00FF00}{(推荐)} (推荐)1. 引入库2. 配置3. 测试类4. 测试结果 总结 前言
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 一、启动器 Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。 !-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.22/version
/dependency二、配置
1.JDBC 配置
spring.datasource.druid.url # 或spring.datasource.url
spring.datasource.druid.username # 或spring.datasource.username
spring.datasource.druid.password # 或spring.datasource.password
spring.datasource.druid.driver-class-name #或 spring.datasource.driver-class-name2.连接池配置
spring.datasource.druid.initial-size
spring.datasource.druid.max-active
spring.datasource.druid.min-idle
spring.datasource.druid.max-wait
spring.datasource.druid.pool-prepared-statements
spring.datasource.druid.max-pool-prepared-statement-per-connection-size
spring.datasource.druid.max-open-prepared-statements #和上面的等价
spring.datasource.druid.validation-query
spring.datasource.druid.validation-query-timeout
spring.datasource.druid.test-on-borrow
spring.datasource.druid.test-on-return
spring.datasource.druid.test-while-idle
spring.datasource.druid.time-between-eviction-runs-millis
spring.datasource.druid.min-evictable-idle-time-millis
spring.datasource.druid.max-evictable-idle-time-millis
spring.datasource.druid.filters #配置多个英文逗号分隔
....//more3. 监控配置
# WebStatFilter配置说明请参考Druid Wiki配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled #是否启用StatFilter默认值false
spring.datasource.druid.web-stat-filter.url-pattern
spring.datasource.druid.web-stat-filter.exclusions
spring.datasource.druid.web-stat-filter.session-stat-enable
spring.datasource.druid.web-stat-filter.session-stat-max-count
spring.datasource.druid.web-stat-filter.principal-session-name
spring.datasource.druid.web-stat-filter.principal-cookie-name
spring.datasource.druid.web-stat-filter.profile-enable# StatViewServlet配置说明请参考Druid Wiki配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled #是否启用StatViewServlet监控页面默认值为false考虑到安全问题默认并未启动如需启用建议设置密码或白名单以保障安全
spring.datasource.druid.stat-view-servlet.url-pattern
spring.datasource.druid.stat-view-servlet.reset-enable
spring.datasource.druid.stat-view-servlet.login-username
spring.datasource.druid.stat-view-servlet.login-password
spring.datasource.druid.stat-view-servlet.allow
spring.datasource.druid.stat-view-servlet.deny# Spring监控配置说明请参考Druid Github Wiki配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns # Spring监控AOP切入点如x.y.z.service.*,配置多个英文逗号分隔三、配置多数据源
1. 添加配置
spring.datasource.url
spring.datasource.username
spring.datasource.password# Druid 数据源配置继承spring.datasource.* 配置相同则覆盖
...
spring.datasource.druid.initial-size5
spring.datasource.druid.max-active5
...# Druid 数据源 1 配置继承spring.datasource.druid.* 配置相同则覆盖
...
spring.datasource.druid.one.max-active10
spring.datasource.druid.one.max-wait10000
...# Druid 数据源 2 配置继承spring.datasource.druid.* 配置相同则覆盖
...
spring.datasource.druid.two.max-active20
spring.datasource.druid.two.max-wait20000
...2. 创建数据源
Primary
Bean
ConfigurationProperties(spring.datasource.druid.one)
public DataSource dataSourceOne(){return DruidDataSourceBuilder.create().build();
}
Bean
ConfigurationProperties(spring.datasource.druid.two)
public DataSource dataSourceTwo(){return DruidDataSourceBuilder.create().build();
}四、配置 Filter
1. 配置Filter 你可以通过 spring.datasource.druid.filtersstat,wall,log4j … 的方式来启用相应的内置Filter不过这些Filter都是默认配置。如果默认配置不能满足你的需求你可以放弃这种方式通过配置文件来配置Filter下面是例子。 # 配置StatFilter
spring.datasource.druid.filter.stat.enabledtrue
spring.datasource.druid.filter.stat.db-typeh2
spring.datasource.druid.filter.stat.log-slow-sqltrue
spring.datasource.druid.filter.stat.slow-sql-millis2000# 配置WallFilter
spring.datasource.druid.filter.wall.enabledtrue
spring.datasource.druid.filter.wall.db-typeh2
spring.datasource.druid.filter.wall.config.delete-allowfalse
spring.datasource.druid.filter.wall.config.drop-table-allowfalse# 其他 Filter 配置不再演示2. 可配置的Filter 目前为以下 Filter 提供了配置支持请参考文档或者根据IDE提示spring.datasource.druid.filter.*进行配置。 StatFilterWallFilterConfigFilterEncodingConvertFilterSlf4jLogFilterLog4jFilterLog4j2FilterCommonsLogFilter 要想使自定义 Filter 配置生效需要将对应 Filter 的 enabled 设置为 true Druid Spring Boot Starter 默认禁用 StatFilter你也可以将其 enabled 设置为 true 来启用它。 五、获取 Druid 的监控数据 Druid 的监控数据可以在开启 StatFilter 后通过 DruidStatManagerFacade 进行获取获取到监控数据之后你可以将其暴露给你的监控系统进行使用。Druid 默认的监控系统数据也来源于此。下面给做一个简单的演示在 Spring Boot 中如何通过 HTTP 接口将 Druid 监控数据以 JSON 的形式暴露出去实际使用中你可以根据你的需要自由地对监控数据、暴露方式进行扩展。 RestController
public class DruidStatController {GetMapping(/druid/stat)public Object druidStat(){// DruidStatManagerFacade#getDataSourceStatDataList 该方法可以获取所有数据源的监控数据除此之外 DruidStatManagerFacade 还提供了一些其他方法你可以按需选择使用。return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();}
}[{Identity: 1583082378,Name: DataSource-1583082378,DbType: h2,DriverClassName: org.h2.Driver,URL: jdbc:h2:file:./demo-db,UserName: sa,FilterClassNames: [com.alibaba.druid.filter.stat.StatFilter],WaitThreadCount: 0,NotEmptyWaitCount: 0,NotEmptyWaitMillis: 0,PoolingCount: 2,PoolingPeak: 2,PoolingPeakTime: 1533782955104,ActiveCount: 0,ActivePeak: 1,ActivePeakTime: 1533782955178,InitialSize: 2,MinIdle: 2,MaxActive: 30,QueryTimeout: 0,TransactionQueryTimeout: 0,LoginTimeout: 0,ValidConnectionCheckerClassName: null,ExceptionSorterClassName: null,TestOnBorrow: true,TestOnReturn: true,TestWhileIdle: true,DefaultAutoCommit: true,DefaultReadOnly: null,DefaultTransactionIsolation: null,LogicConnectCount: 103,LogicCloseCount: 103,LogicConnectErrorCount: 0,PhysicalConnectCount: 2,PhysicalCloseCount: 0,PhysicalConnectErrorCount: 0,ExecuteCount: 102,ErrorCount: 0,CommitCount: 100,RollbackCount: 0,PSCacheAccessCount: 100,PSCacheHitCount: 99,PSCacheMissCount: 1,StartTransactionCount: 100,TransactionHistogram: [55,44,1,0,0,0,0],ConnectionHoldTimeHistogram: [53,47,3,0,0,0,0,0],RemoveAbandoned: false,ClobOpenCount: 0,BlobOpenCount: 0,KeepAliveCheckCount: 0,KeepAlive: false,FailFast: false,MaxWait: 1234,MaxWaitThreadCount: -1,PoolPreparedStatements: true,MaxPoolPreparedStatementPerConnectionSize: 5,MinEvictableIdleTimeMillis: 30001,MaxEvictableIdleTimeMillis: 25200000,LogDifferentThread: true,RecycleErrorCount: 0,PreparedStatementOpenCount: 1,PreparedStatementClosedCount: 0,UseUnfairLock: true,InitGlobalVariants: false,InitVariants: false}
]六、案例
1. 问题 在1.2.13快照版及之后的版本都会去查找一个${project.version}的属性导致我druid的包一直没有下载下来 就算切换到之前的版本自动注入也无法生效SpringBoot3是已经确定的大版本所以我们只能放弃对start的使用。 parentgroupIdcom.alibaba/groupIdartifactIddruid-parent/artifactIdversion1.2.23-SNAPSHOT/versionrelativePath../pom.xml/relativePath
/parent
artifactIddruid-spring-boot-3-starter/artifactId也可能是版本问题官方的下一个版本1.2.23-SNAPSHOT才能匹配springboot3版本。 2. 引入库 由于上面的问题我们只能使用spring常规的使用方式但是和mvc中可能会略有区别。 propertiesjava.version17/java.versionspring.version6.1.6/spring.versionspringboo.version3.2.5/springboo.version
/propertiesdependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.19/version
/dependency
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.22/version
/dependency3. 配置
spring:application:name: spring-boot3#druiddatasource:#type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot?useUnicodetruecharacterEncodingUTF-8useSSLfalseserverTimezoneGMT%2B8allowPublicKeyRetrievaltrueusername: rootpassword: 123456a?initial-size: 5max-active: 20max-wait: 60000min-idle: 34. 配置类
package org.example.springboot3.druid.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** Create by zjg on 2024/5/19*/
Configuration
public class DruidConfig {BeanConfigurationProperties(spring.datasource.druid)public DataSource dataSource(){return new DruidDataSource();}
}
5. 测试类
package org.example.springboot3.druid.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/*** Create by zjg on 2024/5/19*/
RestController
RequestMapping(/druid/)
public class DruidController {AutowiredDataSource dataSource;RequestMapping(001)public String druid001() throws SQLException {Connection connection dataSource.getConnection();Statement statement connection.createStatement();ResultSet resultSet statement.executeQuery(select 1 from dual);String result null;if(resultSet.next()){resultresultSet.getString(1);}statement.close();connection.close();return result;}
}
6. 测试结果
1单独使用最新的1.2.22版本是没有问题的。 七、案例 ( 推荐 ) \color{#00FF00}{(推荐)} (推荐) 昨天写了这篇文章之后感觉没有把最好的带给家人们经过一晚上的不断阅读诸佬的经典总算找到了druid对springboot支持的starter可能是阿里的哥哥们太忙了官方文档是一点介绍没有啊 1. 引入库
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.19/version
/dependency
!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-3-starter --
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-3-starter/artifactIdversion1.2.22/version
/dependency2. 配置
spring:application:name: spring-boot3#druiddatasource:#type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot?useUnicodetruecharacterEncodingUTF-8useSSLfalseserverTimezoneGMT%2B8allowPublicKeyRetrievaltrueusername: rootpassword: 123456a?initial-size: 5max-active: 20max-wait: 60000min-idle: 33. 测试类
package org.example.springboot3.druid.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/*** Create by zjg on 2024/5/19*/
RestController
RequestMapping(/druid/)
public class DruidController {AutowiredDataSource dataSource;RequestMapping(001)public String druid001() throws SQLException {Connection connection dataSource.getConnection();Statement statement connection.createStatement();ResultSet resultSet statement.executeQuery(select 1 from dual);String result null;if(resultSet.next()){resultresultSet.getString(1);}statement.close();connection.close();return result;}
}
4. 测试结果
1总结
回到顶部 源码仓库 中文文档 Druid Spring Boot Starter 更多内容请参考 【第5章】spring命名空间和数据源的引入 【第21章】spring-mvc之整合druid 推荐大家使用starter的案例。