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 相关文章推荐
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
初识Node.js
Mar 20 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
Aug 20 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
微信小程序之GET请求的实例详解
Sep 29 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 Javascript
vue .sync修饰符的使用详解
Jun 15 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
Vuex 模块化使用详解
Jul 31 Javascript
适合后台管理系统开发的12个前端框架(小结)
Jun 29 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/10/20 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP加密解密实例分析
2015/12/25 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python字典get()方法用法分析
2015/04/17 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
pytorch之添加BN的实现
2020/01/06 Python
Python range与enumerate函数区别解析
2020/02/28 Python
如何使用python代码操作git代码
2020/02/29 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
施工人员岗位职责
2013/12/12 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
产品售后服务承诺书
2014/05/21 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS