一、什么是druid?
Druid是Java语言中最好的数据库连接池,由阿里巴巴团队开发。Druid能够提供强大的监控和扩展功能。 github地址为https://github.com/alibaba/druid,有丰富的中文文档和常见问题的解答,非常方便。
数据库本身就有默认的最大连接数,如果超过最大连接数连接数据库,会导致项目报错。而druid连接池,可以配置最大连接数,且不会超过数据本身设置的最大连接数。
二、pom.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
三、配置文件
#配置DataSource,使用druid #需要注意的是:spring.datasource.type属性,旧的spring boot版本是不能识别的。 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/orders?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root # 连接池的配置信息 #数据源其他配置,需要增加Druid的配置类(不然不生效) #配置见:com.lqy.springboot.datasource.druid.DruidConfig spring.datasource.druid.initialSize=5 spring.datasource.druid.minIdle=5 spring.datasource.druid.maxActive=20 spring.datasource.druid.maxWait=60000 spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 spring.datasource.druid.minEvictableIdleTimeMillis=300000 spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL spring.datasource.druid.testWhileIdle=true spring.datasource.druid.testOnBorrow=false spring.datasource.druid.testOnReturn=false spring.datasource.druid.poolPreparedStatements=true #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 spring.datasource.druid.filters=stat,wall,log4j spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.druid.useGlobalDataSourceStat=true spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
四、web程序如何监视dao所在的factory
<servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param> <param-name>resetEnable</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping>
逻辑打开数量:dataSource.getConnect()的数量
逻辑关闭数量:.close()的数量
“逻辑打开数量”应等于“逻辑关闭数量”