什么是数据源?
Java中的数据源就是连接到数据库的一条路径,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接。DataSource的创建可以有不同的实现。DataSource通常被称为数据源,它包含连接池 和连接池管理 两部分,习惯上也经常把DataSource称为连接池。
Spring Boot 默认支持的数据源
Java的javax.sql.DataSource接口提供了一种使用数据库连接的标准方法。传统上的'DataSource'使用URL等一些配置来建立数据库连接。目前一些开源组织都提供了数据源的独立实现
Spring Boot默认支持4种数据源类型,
分别是:
org.apache.tomcat.jdbc.pool.DataSource
com.zaxxer.hikari.HikariDataSource
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
对于这4种数据源,当 classpath 下有相应的类存在时,Springboot 会通过自动配置为其生成DataSource Bean,DataSource Bean默认只会生成一个,四种数据源类型的生效先后顺序如下:Tomcat--> Hikari --> Dbcp --> Dbcp2 。 但是本章节我们并不去重点介绍以上四种数据源,重点介绍Druid,至于为什么且往下看。
Druid数据源介绍
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,而且是中文页面,可以说是针对监控而生的DB连接池,可以说是Java语言中最好的数据库连接池。
Spring Boot 整合Druid数据库连接池(最新教程)
前提:本项目使用的数据库为Mysql8.0
我们需要在pom文件中引入druid-spring-boot-starter,版本是1.1.10
注意:Spring Boot整合druid有两种方式,一种是引入druid包,还有种方式是引入druid-spring-boot-starter,两者的区别是,通过引入druid-spring-boot-starter的方式整合Druid会更加的简单,不需要增加注册后台页面的servlert,不需要监听获取应用数据的fliter。
从下面的图中的描述就能看到一段话 Spring Boot with Druid suppor,help you simplify Druid config in Spring Boot.
好了,下面是整合步骤
1.pom增加相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- springboot 2.1 实践教程(十四)-DataSource的配置-->
<groupId>org.learn</groupId>
<artifactId>learn13</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--thymeleaf模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<!--Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
</project>
2.编写application.yml 增加Druid数据源的配置
# 数据源配置
spring:
application:
name: springboot-test-exam1
datasource:
# 使用阿里的Druid连接池
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# 填写你数据库的url、登录名、密码和数据库名
url: jdbc:mysql://localhost:3306/guajava?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
druid:
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
# 配置DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: "/*"
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
# 配置DruidStatViewServlet
stat-view-servlet:
url-pattern: "/druid/*"
# IP白名单(没有配置或者为空,则允许所有访问)
allow: 127.0.0.1,192.168.163.1
# IP黑名单 (存在共同时,deny优先于allow)
deny: 192.168.1.73
# 禁用HTML页面上的“Reset All”功能
reset-enable: false
# 登录名
login-username: admin
# 登录密码
login-password: 123456
从控制台输出我们可以看出druid整合完成。
下面我们看下druid的监控是否能正常查看
浏览器输入http://localhost:8080/druid,访问到以下下面
输入用户名/密码 admin/123456
注意这块的密码是我们在application.yml配置数据源时设置的
登录后的页面,显示了我们配置的数据源相关信息,后续如果有对sql的请求,我们则可以在监控页面看到相应的sql执行的效率
具体包含的功能可以看下导航
好了以上就是Spring Boot 整合Druid数据源的方法,如果有什么问题可以在评论区留言。