spring boot集成druid数据库连接池,实现对数据库的监控
来源:互联网 发布:pc蛋蛋幸运28最新算法 编辑:程序博客网 时间:2024/05/01 03:45
一、加入druid依赖
<!--druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.27</version></dependency>二、在application.properties配置文件中加入druid配置
# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20# 配置获取连接等待超时的时间spring.datasource.maxWait=60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.datasource.minEvictableIdleTimeMillis=300000# 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用spring.datasource.validationQuery=SELECT 'x'spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙spring.datasource.filters=stat,wall,log4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 合并多个DruidDataSource的监控数据spring.datasource.useGlobalDataSourceStat=true三、配置WebFilter
package com.chhliu.springboot.jpa;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;import com.alibaba.druid.support.http.WebStatFilter;@WebFilter(filterName="druidStatFilter",urlPatterns="/*",initParams={ @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源})public class DruidStatFilter extends WebStatFilter {}四、配置WebServlet
package com.chhliu.springboot.jpa;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import com.alibaba.druid.support.http.StatViewServlet;@WebServlet(urlPatterns = "/druid/*",initParams={ @WebInitParam(name="allow",value="127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name="deny",value="192.168.0.0"),// IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name="loginUsername",value="admin"),// druid监控页面登陆用户名 @WebInitParam(name="loginPassword",value="admin"),// druid监控页面登陆密码 @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能})public class DruidStatViewServlet extends StatViewServlet {/** * */private static final long serialVersionUID = 1L;}五、扫描Servlet
package com.chhliu.springboot.jpa;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClient@ServletComponentScan // 注意要加上@ServletComponentScan注解,否则Servlet无法生效public class SpringbootJpaDruidApplication {public static void main(String[] args) {SpringApplication.run(SpringbootJpaDruidApplication.class, args);}}六、启动应用程序
1、在浏览器中输入http://localhost:7602/druid/login.html登陆
2、登陆进去后,监控页面如下:
经过测试发现,无论我们怎么操作,SQL监控一直都显示不出任何的内容,当前使用的spring boot版本为1.4.x版本
七、不使用spring boot自动配置功能,手动初始化DataSource
package com.chhliu.springboot.jpa;import java.sql.SQLException;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import com.alibaba.druid.pool.DruidDataSource;/** * * 描述:如果不使用代码手动初始化DataSource的话,监控界面的SQL监控会没有数据("是spring boot的bug???") * @author chhliu * 创建时间:2017年2月9日 下午10:33:08 * @version 1.2.0 */@Configurationpublic class DruidConfiguration { @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driverClassName}") private String driverClassName; @Value("${spring.datasource.initialSize}") private int initialSize; @Value("${spring.datasource.minIdle}") private int minIdle; @Value("${spring.datasource.maxActive}") private int maxActive; @Value("${spring.datasource.maxWait}") private int maxWait; @Value("${spring.datasource.timeBetweenEvictionRunsMillis}") private int timeBetweenEvictionRunsMillis; @Value("${spring.datasource.minEvictableIdleTimeMillis}") private int minEvictableIdleTimeMillis; @Value("${spring.datasource.validationQuery}") private String validationQuery; @Value("${spring.datasource.testWhileIdle}") private boolean testWhileIdle; @Value("${spring.datasource.testOnBorrow}") private boolean testOnBorrow; @Value("${spring.datasource.testOnReturn}") private boolean testOnReturn; @Value("${spring.datasource.poolPreparedStatements}") private boolean poolPreparedStatements; @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}") private int maxPoolPreparedStatementPerConnectionSize; @Value("${spring.datasource.filters}") private String filters; @Value("${spring.datasource.connectionProperties}") private String connectionProperties; @Value("${spring.datasource.useGlobalDataSourceStat}") private boolean useGlobalDataSourceStat; @Bean //声明其为Bean实例 @Primary //在同样的DataSource中,首先使用被标注的DataSource public DataSource dataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(this.dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); //configuration datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat); try { datasource.setFilters(filters); } catch (SQLException e) { System.err.println("druid configuration initialization filter: "+ e); } datasource.setConnectionProperties(connectionProperties); return datasource; }}注意:上面的这个类需要放到和application同级的目录下,这样才能在程序启动的时候初始化DataSource
修改过后结果如下:
发现,SQL监控页面有内容了。估计这个问题是spring boot在升级过程中产生的一个bug。
0 0
- spring boot集成druid数据库连接池,实现对数据库的监控
- spring boot集成druid数据库连接池,实现对数据库的监控
- spring-boot集成mybatis使用Druid监控
- spring boot 集成druid,监控配置
- Spring boot Druid监控、Mybatis、pageHelper集成
- Spring Boot整合Druid连接池开启数据库监控功能
- spring boot(6) 使用数据库连接池druid
- Spring Boot [使用 Druid 数据库连接池]
- Spring Boot [使用 Druid 数据库连接池]
- spring-boot 连接池 druid 的配置及监控
- spring boot集成druid连接池
- Mysql实现监控数据统计分析:Druid开源分布式系统与阿里巴巴的Druid数据库连接池
- spring boot整合druid以及druid监控
- spring boot(11)-druid监控
- spring boot(11)-druid监控
- spring-boot 集成Druid数据源
- Spring Boot集成Druid数据源
- Spring Boot集成MyBatis、druid
- 起点不高,又很迷茫怎么办
- 三级数据库知识点总结(不断补充中)
- 选择小波函数的一般原则和尺度的选择
- 自定义头部的下拉刷新
- AndroidStudio使用过程中遇到的bug
- spring boot集成druid数据库连接池,实现对数据库的监控
- 数据结构实验之栈一:进制转换
- 找不到请求的 .Net Framework Data Provider。可能没有安装.
- 网络编程之vbs脚本
- 浅谈~大数据
- 声纹识别2
- 安装 Laravel 遇到问题?你需要更新 composer.json 文件
- 去掉GridView的滚动条
- 有关小波的几个术语及常见的小波基介绍