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中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
JavaScript自定义日期格式化函数详细解析
Jan 14 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
Jan 04 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
Jul 20 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
php处理斐波那契数列非递归方法
2012/02/04 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
python实现类的静态变量用法实例
2015/05/08 Python
Python自动生产表情包
2017/03/17 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
python3安装crypto出错及解决方法
2019/07/30 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python 创建TCP服务器的方法
2020/07/28 Python
幼儿园母亲节活动方案
2014/03/10 职场文书
商务英语专业求职信
2014/06/26 职场文书
世界地球日活动总结
2015/02/09 职场文书
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android