Springboot数据源
内置的数据源
-
SpringBoot内置提供了dbcp, tomcat, hikari三种连接池。
-
hikari在默认不配置其他数据源的条件生效。
-
tomcat数据源在hikari不可用,并且在web环境的条件下生效。
-
dbcp在hikari不可用,tomcat数据源也不可用的条件下生效。
-
不使用其他数据源的时候,内置的三种数据源按满足条件的一种生效。
springboot自带数据源hikari常用配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/java_template?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1004
hikari: # springboot自带的连接池配置
pool-name: DateHikariCP # 连接池名称
minimum-idle: 5 # 最小空闲连接数
idle-timeout: 1200000 # 空闲连接存活最大时间,默认600000 (10分钟)
maximum-pool-size: 10 # 最大连接数,默认10
auto-commit: true # 从连接池返回的连接自动提交
max-lifetime: 1800000 # 连接最大存活时间,默认1800000 (30分钟)
connection-timeout: 30000 # 连接超时时间,默认30000 (30秒)
connection-init-sql: SELECT 1 # 测试连接是否可用的语句
在不使用其他数据源的情况下,SpringBoot内置的数据源Hikari生效
druid数据源的使用
- 引入阿里druid的maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
或者
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
两个的主要区别在于druid-spring-boot-starter可以使用Springboot的自动配置功能,导入依赖后无需配置,数据源即可生效。并且两种配置方式上稍微有点区别
- 引入druid后不做任何连接池配置的效果(依然是Springboot默认Hikari生效)
- 引入druid-spring-boot-starter后不做任何连接池配置的效果(SpringBoot自动配置功能使druid数据源生效)
diuid两种常用的配置
- 引入的依赖是druid
spring:
datasource:
url: jdbc:mysql://localhost:3306/java_template?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1004
type: com.alibaba.druid.pool.DruidDataSource #指定类型为druid
druid: # druid配置
initialSize: 5 # 连接池初始化连接数量
minIdle: 5 # 连接池最小空闲数
maxActive: 20 # 连接池最大活跃连接数
maxWait: 60000 # 配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最小生存的时间,单位是毫秒
validationQuery: SELECT 1 # 连接是否有效的查询语句
- 引入的依赖是druid-spring-boot-starter(可以把配置项druid提升一个层次书写,也支持上面的配置方式)
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/java_template?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1004
initialSize: 5 # 连接池初始化连接数量
minIdle: 5 # 连接池最小空闲数
maxActive: 20 # 连接池最大活跃连接数
maxWait: 60000 # 配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最小生存的时间,单位是毫秒
validationQuery: SELECT 1 # 连接是否有效的查询语句