SpringBoot在yml配置文件中配置druid的操作


Posted in Javascript onNovember 16, 2020

最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid中配置filter:

spring:
 ##数据库连接信息
 datasource:
 url: jdbc:mysql://localhost:3306/young
 username: root
 password: root
 driver-class-name: com.mysql.jdbc.Driver
 ###################以下为druid增加的配置###########################
 type: com.alibaba.druid.pool.DruidDataSource
 # 下面为连接池的补充设置,应用到上面所有数据源中
 # 初始化大小,最小,最大
 initialSize: 5
 minIdle: 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,log4j
 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
 # 合并多个DruidDataSource的监控数据
 useGlobalDataSourceStat: true
 ###############以上为配置druid添加的配置###########################

下面是1.1.10版本的druid配置filter:

spring:
 ##数据库连接信息
 datasource:
 url: jdbc:mysql://localhost:3306/day05
 username: root
 password: 15963asd
 driver-class-name: com.mysql.jdbc.Driver
 ###################以下为druid增加的配置###########################
 type: com.alibaba.druid.pool.DruidDataSource
 # 下面为连接池的补充设置,应用到上面所有数据源中
 # 初始化大小,最小,最大
 initialSize: 5
 minIdle: 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'用于防火墙,此处是filter修改的地方
 filters:
  commons-log.connection-logger-name: stat,wall,log4j
 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
 # 合并多个DruidDataSource的监控数据
 useGlobalDataSourceStat: true

顺便附一下出现在springboot中yml配置文件里面配置druid的filter配置错误的信息:

Property: spring.datasource.filters

Value: stat,wall,log4j

Origin: class path resource [application.yml]:29:14

Reason: Unable to set value for property filters

补充知识:Springboot中yml文件读取

SpringBoot的.yml文件是一个非常简洁明了的配置文件,可看作.properties的精简版。

一般来讲,我们通过@Value这个注解就可以直接获取到某个properties的值。

如:有如下配置:

spring:
 datasource:
  druid:
   localhost:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/paas-dashboard?useUnicode=true&characterEncoding=utf8
    username: root
    password:123
    master:
    driverClassName: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@//172.21.0.73:1621/tthradb
    username: dbchnesbcfgcha
    password: dbchnesbcfgcha

一般来讲,直接通过@Value(spring.datasource.druid.localhost.driverClassName)直接获取到这个值了。

但是如果需要直接获取到localhost下面所有的配置呢?或者自己指定某一层下面所有的配置信息呢?

简单示例

SpringBoot中还有一种非常强大的注解@ConfigurationProperties,使用该注解可直接将yml的配置直接注入到某个对象中。

如:yml中有如下配置:

info:
   user:
    name: zhangsan
    age: 14

这时,我们定义个User对象:

class User{
 String name;
 int age;
 
//getter 及 setter方法 
}

在Spring容器中直接通过@ConfigurationProperties来注入,需要指定前缀到配置文件中user的上一层。对象名必须同yml中的配置。

@Component
@PropertySource("classpath:application-druid.yml") //指定yml文件位置
@ConfigurationProperties(prefix = "info")
public class YmlConfig{
 
 User user = new User();
//user getter及setter方法
}

Spring容器启动后,yml中的配置的属性即注入到user对象。

或者我们也可以用个Map来进行封装,配置文件中的属性无非就是key:value的形式,同样定义user对象:

@Component
@PropertySource("classpath:application-druid.yml") //指定yml文件位置
@ConfigurationProperties(prefix = "info")  
public class YmlConfig{
 
 Map<String,String> user = new HashMap<>();
//user getter及setter方法
}

同样也能注入到user的Map对象。

指定任意层

如本文开始的那个yml配置文件的配置,如果,我想直接获取到所有的数据源的配置,那么就必须要指定一个对象能装下所有的这些配置,可以自定义对象,或者直接使用Map。如,我们定义如下的Map:

@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class YmlConfig{
 
 Map<String,Map<String,String>> druid = new HashMap<>();
//user getter及setter方法
}

Spring容器其中后,配置文件中spring.datasource.druid以下的配置属性同样能注入到druid对象中去。

同样指定其他层的配置,只要符合某个对象的数据结构,就能将配置的属性注入到该对象中去。

以上这篇SpringBoot在yml配置文件中配置druid的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 在线压缩和格式化收藏
Jan 16 Javascript
javascript (用setTimeout而非setInterval)
Dec 28 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
js常见遍历操作小结
Jun 06 Javascript
详解JavaScript原型与原型链
Nov 16 #Javascript
详解JavaScript执行模型
Nov 16 #Javascript
Vue 实现拨打电话操作
Nov 16 #Javascript
微信小程序实现页面左右滑动
Nov 16 #Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 #Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 #Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 #Javascript
You might like
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php以post形式发送xml的方法
2014/11/04 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
jquery简单体验
2007/01/10 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
详解Python中的文件操作
2016/08/28 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
Python如何在DataFrame增加数值
2020/02/14 Python
工业自动化专业毕业生推荐信
2013/11/18 职场文书
生日主持词
2014/03/20 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
员工工作能力评语
2014/12/31 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
关于Python中进度条的六个实用技巧分享
2022/04/05 Python