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 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
jQuery实现表单提交时判断的方法
Dec 13 Javascript
Javascript 实现图片无缝滚动
Dec 19 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
javascript的正则匹配方法学习
Feb 24 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
js实现固定宽高滑动轮播图效果
Jan 13 Javascript
jQuery实现列表的增加和删除功能
Jun 14 jQuery
Vue axios设置访问基础路径方法
Sep 19 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
Apr 07 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
PHP中其实也可以用方法链
2011/11/10 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
Python3.x中自定义比较函数
2015/04/24 Python
Python入门之modf()方法的使用
2015/05/15 Python
python中私有函数调用方法解密
2016/04/29 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Django中的Model操作表的实现
2018/07/24 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
Python绘制数码晶体管日期
2021/02/19 Python
教师对学生的评语
2014/04/28 职场文书
网络优化专员求职信
2014/05/04 职场文书
财会专业大学生求职信
2014/09/26 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
Linux磁盘管理方法介绍
2022/06/01 Servers