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 相关文章推荐
jquery 操作日期、星期、元素的追加的实现代码
Feb 07 Javascript
纯css+js写的一个简单的tab标签页带样式
Jan 28 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
vue-router路由与页面间导航实例解析
Nov 07 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
vue-dplayer 视频播放器实例代码
Nov 08 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 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 各种排序算法实现代码
2009/08/20 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
python实现折半查找和归并排序算法
2017/04/14 Python
通过cmd进入python的实例操作
2019/06/26 Python
python实现倒计时小工具
2019/07/29 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
关于读书的演讲稿600字
2014/08/27 职场文书
解析MySQL索引的作用
2022/03/03 MySQL
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js