Spring Boot使用Druid和监控配置

Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。

下面来说明如何在 Spring Boot 中配置使用Druid

(1)添加Maven依赖 (或jar包)\

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.18</version>
</dependency>

2)、配置数据源相关信息

# 数据库访问配置
# 主数据源,默认的
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.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

(3) 配置监控统计功能

配置Servlet

如下是在SpringBoot项目中基于注解的配置,如果是web.xml配置,按规则配置即可。

DruidStatViewServlet:

import com.alibaba.druid.support.http.StatViewServlet;

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

/**
 * druid数据源状态监控.
 * Created by winner_0715 on 2017/4/19.
 */
@WebServlet(urlPatterns = "/druid/*",
        initParams = {
                // IP白名单 (没有配置或者为空,则允许所有访问)
                @WebInitParam(name = "allow", value = "192.168.1.72,127.0.0.1"),
                // IP黑名单 (存在共同时,deny优先于allow)
                @WebInitParam(name = "deny", value = "192.168.1.73"),
                // 用户名
                @WebInitParam(name = "loginUsername", value = "admin"),
                // 密码
                @WebInitParam(name = "loginPassword", value = "123456"),
                // 禁用HTML页面上的“Reset All”功能
                @WebInitParam(name = "resetEnable", value = "false")
        }
)
public class DruidStatViewServlet extends StatViewServlet {
    private static final long serialVersionUID = 1L;

}
DruidStatFilter:
import com.alibaba.druid.support.http.WebStatFilter;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

/**
 * druid过滤器.
 * Created by winner_0715 on 2017/4/19.
 */
@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
        initParams = {
                // 忽略资源
                @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
        }
)
public class DruidStatFilter extends WebStatFilter {

}

最后在启动类上加上注解:@ServletComponentScan使得spring能够扫描到我们自己编写的servlet和filter。

注意不要忘记在 SpringBootSampleApplication.java 上添加 @ServletComponentScan 注解,不然就是404了。

然后启动项目后访问 http://127.0.0.1:8080/druid/index.html 即可查看数据源及SQL统计等。

(4)配置监控系统方式二:

以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。

在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:

DruidConfiguration :

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;

/**
 * 这样的方式不需要添加注解:@ServletComponentScan
 * Created by winner_0715 on 2017/4/19.
 */
@Configuration
public class DruidConfiguration {

    /**
     * 注册一个StatViewServlet
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean DruidStatViewServle2() {
        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid2/*");

        //添加初始化参数:initParams

        //白名单:
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        //登录查看信息的账号密码.
        servletRegistrationBean.addInitParameter("loginUsername", "admin2");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    /**
     * 注册一个:filterRegistrationBean
     *
     * @return
     */
    @Bean
    public FilterRegistrationBean druidStatFilter2() {

        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");

        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");
        return filterRegistrationBean;
    }

}

启动应用就可以访问:http://127.0.0.1:8080/druid2/index.html输入账号和密码:admin2/123456 就可以访问了。

时间: 2024-10-21 18:38:56

Spring Boot使用Druid和监控配置的相关文章

SpringBoot:spring boot使用Druid和监控配置

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能. Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource 业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因. 下面来说明如何在 spring Boot 中配置使用Druid 整体步骤: (1)    ——   Druid简

Spring Boot [使用 Druid 数据库连接池]

导读 最近一段时间比较忙,以至于很久没有更新Spring Boot系列文章,恰好最近用到Druid, 就将Spring Boot 使用 Druid作为数据源做一个简单的介绍. Druid介绍: Druid是阿里巴巴开源的数据库连接池,Druid号称是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能,Druid的官方地址 了解更多: JDBC连接池.监控组件 Druid (oschina) 快速上手: 下面来说明如何在 spring Boot 中配置使用Druid ,本例使用的持

[转] Druid简介(Spring Boot + Mybatis + Druid数据源【自己定制】)

Druid的简介Druid是一个非常优秀的数据库连接池.在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource. Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验. Druid是一个JDBC组件,它包括三个部分: 基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池. SQLParser Druid的功能兼容DBCPDruid提

Spring Boot Admin 集成自定义监控告警

Spring Boot Admin 集成自定义监控告警 前言 Spring Boot Admin 是一个社区项目,可以用来监控和管理 Spring Boot 应用并且提供 UI,详细可以参考 官方文档. Spring Boot Admin 本身提供监控告警功能,但是默认只提供了 Hipchat.Slack 等国外流行的通讯软件的集成,虽然也有邮件通知,不过考虑到使用体检决定二次开发增加 钉钉 通知. 本文基于 Spring Boot Admin 目前最新版 1.5.7. 准备工作 Spring

【Spring Boot】利用 Spring Boot Admin 进行项目监控管理

利用 Spring Boot Admin 进行项目监控管理 一.Spring Boot Admin 是什么 Spring Boot Admin (SBA) 是一个社区开源项目,用于管理和监视 Spring Boot 应用程序.应用程序通过 http 的方式注册到 Spring Boot 管理客户端,或者通过 Spring Cloud 的服务发现机制,然后针对 actuator 接口将数据通过 Vue.js 进行可视化管理. 对于我们来说,我们可以通过 Spring Boot Admin 浏览所有

Spring Boot应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Maven的Spring Boot插件mvn spring-boot:run来运行 打成jar包后,使用java -jar运行 我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种.但是,我们在使用java -jar来运行的时候,并非后台运行.下面我们分别针对Windows和Linux/Uni

[转]Spring Boot应用的后台运行配置

转自:http://blog.didispace.com/spring-boot-run-backend/ 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Maven的Spring Boot插件mvn spring-boot:run来运行 打成jar包后,使用java -jar运行 我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种.但是

JAR(Spring Boot)应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Maven的Spring Boot插件mvn spring-boot:run来运行 打成jar包后,使用java -jar运行 我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种.但是,我们在使用java -jar来运行的时候,并非后台运行.下面我们分别针对Windows和Linux/Uni

Spring boot 的 properties 属性值配置 application.properties 与 自定义properties

配置属性值application.properties 文件直接配置: com.ieen.super.name="MDD" 自定义properties文件配置:src/main/resources/conf/boot.properties com.ieen.boot.name="123" com.ieen.boot.value="456" 调用方法@Value 注解调用application.properties属性值: @Value("