SpringBoot 集成 Druid 数据源【SpringBoot系列3】

您所在的位置:网站首页 loginpassword SpringBoot 集成 Druid 数据源【SpringBoot系列3】

SpringBoot 集成 Druid 数据源【SpringBoot系列3】

#SpringBoot 集成 Druid 数据源【SpringBoot系列3】| 来源: 网络整理| 查看: 265

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发1 项目准备

早起的年轻人:SpringBoot项目创建【SpringBoot系列1】

早起的年轻人:SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat Pool切换到HikariCP,我们在启动项目后,访问数据查询,控制台日志可以输相关信息。

Druid是阿里系提供的一个开源连接池,除在连接池之外,Druid还提供了非常优秀的数据库监控和扩展功能,所以在项目开发中一般会使用 Druid 。

2 Druid 简单介绍

Druid是阿里开源的一个JDBC应用组件,通过Druid连接池中间件, 可以实现的功能如下:

监控数据库访问性能,通过StatFilter插件,详细统计SQL的执行性能SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog 数据库密码加密。

打开pom文件,添加 druid 相关的 maven 依赖。

com.alibaba druid-spring-boot-starter 1.2.16

需要注意 log4j 日志

log4j log4j 1.2.17

在 application.yml 中 把原有的数据源配置替换成 druid 数据源并配置数据源相关参数

spring: mvc: pathmatch: matching-strategy : ant-path-matcher datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: url: jdbc:mysql://mysql:3306/spring_boot?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&useSSL=false username: testadmin password: qwert.12345 filters: stat,wall,log4j,config max-active: 100 initial-size: 1 max-wait: 60000 min-idle: 1 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: select 'x' test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-open-prepared-statements: 50 max-pool-prepared-statement-per-connection-size: 20 filter: stat: log-slow-sql: true 2 配置Servlet和Filter

在config包中添加一个DruidConfig配置类。

import javax.servlet.Filter; import javax.servlet.Servlet; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; @Configuration public class DruidConfig { /** * 注册Servlet信息, 配置监控视图 * * @return */ @Bean @ConditionalOnMissingBean public ServletRegistrationBean druidServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); //白名单: servletRegistrationBean.addInitParameter("allow", "192.168.10.22"); //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page. servletRegistrationBean.addInitParameter("deny", "192.168.1.119"); //登录查看信息的账号密码, 用于登录Druid监控后台 servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "admin"); //是否能够重置数据. servletRegistrationBean.addInitParameter("resetEnable", "true"); return servletRegistrationBean; } /** * 注册Filter信息, 监控拦截器 * * @return */ @Bean @ConditionalOnMissingBean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }

2.1 配置监控拦截器

import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; import com.alibaba.druid.support.http.WebStatFilter; /** * 配置监控拦截器, druid监控拦截器 */ @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = { @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" ), // 忽略资源 }) public class DruidStatFilter extends WebStatFilter { }

2.2 配置Druid监控视图

import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import com.alibaba.druid.support.http.StatViewServlet; /** * druid监控视图配置 */ @WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value="192.168.6.195"), // IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name="deny",value="192.168.6.73"), // IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name="loginUsername",value="admin"), // 用户名 @WebInitParam(name="loginPassword",value="admin"), // 密码 @WebInitParam(name="resetEnable",value="true") // 禁用HTML页面上的“Reset All”功能 }) public class DruidStatViewServlet extends StatViewServlet { private static final long serialVersionUID = 7359758657306626394L; } 3 启动项目

启动应用,访问:http://localhost:8899/druid/login.html, 端口对应项目中使用的端口,进入Druid监控后台页面。

然后 postman 访问一下 user/list 接口

然后在 druid 控制台就可以查看到对应的 监控数据

项目源码在这里 :https://gitee.com/android.long/spring-boot-study/tree/master/biglead-api-03-druid

有兴趣可以关注一下公众号:biglead



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3