赞
踩
前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:Druid,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控,看到SQL的执行次数、时间和慢SQL信息,也可以对数据库密码信息进行加密,也可以对监控结果进行日志的记录,以及可以实现对敏感操作实现开关,杜绝SQL注入,下面我们详细讲一下它如何与Spring集成,并且顺便了解一下它的监控的配置。
文章要点:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jdbc</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>2.2.0</version>
- </dependency>
-
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.6</version>
- </dependency>

- @Configuration
- public class DataSourceConfiguration {
-
- @ConfigurationProperties(prefix = "spring.datasource.druid")
- @Bean
- public DataSource dataSource(){
- return new DruidDataSource();
- }
- }
- # 或spring.datasource.url
- spring.datasource.druid.url=jdbc:mysql://localhost:3306/chenrui
- # 或spring.datasource.username
- spring.datasource.druid.username=root
- # 或spring.datasource.password
- spring.datasource.druid.password=root
-
- #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
- spring.datasource.druid.initial-size=5
- #最大连接池数量
- spring.datasource.druid.max-active=20
- #最小连接池数量
- spring.datasource.druid.min-idle=5
- #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁
- spring.datasource.druid.max-wait=500
- #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
- spring.datasource.druid.pool-prepared-statements=false
- #要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
- spring.datasource.druid.max-pool-prepared-statement-per-connection-size=-1
- #用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
- spring.datasource.druid.validation-query=select 'x'
- #单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
- spring.datasource.druid.validation-query-timeout=1
- #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
- spring.datasour

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。