Springboot 项目启动之后,我们可以通过Springboot 的application.yml文件来配置数据库连接池等各种各样的属性
先看下这个配置文件是怎么写的(主要是关于数据库连接的)
前言: DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。
server:
port: 8080
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/vcd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
max-active: 30
min-idle: 5
validation-query: SELECT 1 FROM DUAL
max-wait: 10000
min-evictable-idle-time-millis: 30000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,log4j2
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
web-stat-filter:
enabled: true
url-pattern: "/*"
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
url-pattern: "/druid/*"
allow: 0.0.0.0
reset-enable: false
login-username: admin
login-password: admin
thymeleaf:
cache: false # 开发时关闭缓存,不然没法看到实时页面
mode: LEGACYHTML5 # 用非严格的 HTML
servlet:
content-type: text/html
1、指定server的接口
server:
port:8080
2、指定Spring 连接池来源(这个写完之后会提示你导入相应的maven依赖)
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/vcd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
3、设置连接池的连接数量、时间等属性
max-active: 30
min-idle: 5
validation-query: SELECT 1 FROM DUAL
max-wait: 10000
min-evictable-idle-time-millis: 30000
max-active 设置最大数据库连接数,设为0为无限制
min-idle 始终保留在池中的最小连接数,如果连接验证失败将缩小至此值
validation-query validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句
(这里的validation-query是 mysql中的写法,这个是固定的写法)
max-wait 最大等待时间
min-evictable-idle-time-millis:连接在池中保持空闲而不被回收的最小时间(毫秒)
4、连接的动作和设置prepareStatement
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
testWhileIdle 对池中空闲的连接是否进行验证,验证失败则回收此连接(默认为false)
testOnBorrow 当从连接池中取出一个连接时是否进行验证,若验证失败则从池中删除该连接并尝试取出另一个连接
testOnReturn 当一个连接使用完归还到连接池时是否进行验证
poolPreparedStatements 启用游标缓存,这个对数据库的性能提升很大
maxPoolPreparedStatementPerConnectionSize 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
5、加入扩展插件
属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
filters: stat,wall,log4j2
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
web-stat-filter:
enabled: true
url-pattern: "/*"
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
url-pattern: "/druid/*"
allow: 0.0.0.0
reset-enable: false
login-username: admin
login-password: admin
filters: 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有,监控统计用的filter:stat,日志用的filter:log4j ,防御sql注入的filter:wall