springboot使用druid和监控配置

     2022-03-16     399

关键词:

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 就可以访问了。

springboot系列七:springboot集成mybatis事物配置及使用druid数据源druid监控使用

一、MyBatis和druid简介  MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接... 查看详情

springboot集成druid批量插入数据和效率监控配置(代码片段)

...;多线程甚至生产者消费者模式后续补充。测试环境:SpringBoot2.5Mysql8JDK8Druid搭建测试环境Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。业界把Druid和HikariCP做对比后,虽说HikariCP的性能比D... 查看详情

springboot系列之集成druid配置数据源监控

SpringBoot系列之集成Druid配置数据源监控继上一篇博客SpringBoot系列之JDBC数据访问之后,本博客再介绍数据库连接池框架Druid的使用实验环境准备:MavenIntelliJIDEA先新建一个SpringbootInitializer项目,详情参考SpringBoot系列之快速创建Initi... 查看详情

springboot配置druid数据源

SpringBoot配置Druid数据源Druid是阿里巴巴的一个开源项目,使用这个数据源的好处就是可以使用监控功能,提供了一个简单的后台,可以监控数据源的数据配置方式导入坐标<!--https://mvnrepository.com/artifact/com.alibaba/druid--><depende... 查看详情

springboot2----数据访问(代码片段)

数据访问数据源的自动配置---默认是HikariDataSource导入JDBC场景分析自动配置自动配置的类修改配置项使用Druid数据源druid官方github地址自定义方式创建数据源Driud内置监控页面功能开启Driud监控统计功能开启(sql监控)web-jdbc关联的监... 查看详情

springboot入门之基于druid配置mybatis多数据源

...处理,这篇了解下使用基于基于Druid配置Mybatis多数据源。SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,SpringBoot就会基于约定根据配置信息实例化对象,但是一般大型的项目都是有多个子系统或者多个数据... 查看详情

springboot多数据源配置

    目前,业界流行的数据操作框架是Mybatis,那Druid是什么呢?Druid是Java的数据库连接池组件。Druid能够提供强大的监控和扩展功能。比如可以监控SQL,在监控业务可以查询慢查询SQL列表等。Druid核心主要包括三部... 查看详情

springboot中加入druid对sql进行监控

springboot作为现在十分流行的框架,简化Spring应用的初始搭建以及开发过程,现在我们就使用springboot来进行简单的web项目搭建并对项目sql进行监控。项目的搭建就省略了,springboot项目搭建好以后,进行一下操作,本例子的项目使用mav... 查看详情

配置druid数据源及密码加密-springboot2.7(代码片段)

在SpringBoot中配置Druid数据源及密码加密的方法集成MyBatisPlus,实现了一组增删改查接口。在启动服务时,从控制台中可以看出SpringBoot默认使用Hikari作为数据库连接池,Hikari性能很优秀。在国内使用较多的连接池还属阿... 查看详情

springboot动态数据源druid及监控配置

packagecom.creditcore.services.common.dataSource;importjava.sql.SQLException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.sql.DataSource;importorg.apache.ibatis.session 查看详情

springboot开启druid监控统计功能(代码片段)

Druid相关配置属性:配置Druid数据源(连接池):如同以前c3p0、dbcp数据源可以设置数据源连接初始化大小、最大连接数、等待时间、最小连接数等一样,Druid数据源同理可以进行设置;配置Druidweb监控filter&#... 查看详情

springboot之整合druid并配置数据源监控

pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/PO 查看详情

springboot开启druid监控功能

1.配置yml1spring:2datasource:3#数据源基本配置4username:song5password:1234566driver-class-name:com.mysql.jdbc.Driver7url:jdbc:mysql://39.106.222.34:3306/mybatis8type:com.alibaba.druid.pool.DruidDataSource9#数据源其 查看详情

springboot使用druid连接池详解(代码片段)

SpringBoot使用Druid连接池详解AlibabaDruid是一个JDBC组件库,包含数据库连接池、SQLParser等组件,被大量业务和技术产品使用或集成,经历过严苛的线上业务场景考验,是值得信赖的技术产品。DruidSpringBootStarter用于帮... 查看详情

springboot配置druid连接池

Druid的简介Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBossDataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年... 查看详情

springboot使用·上篇(springboot注解+集成jdbc+集成druid(德鲁伊)+sql监控)(代码片段)

文章目录SpringBoot的使用SpringBoot注解@SpringBootApplication@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan@Configuration@Bean@ConfigurationPropertiesSpringBoot集成JDBC 查看详情

springboot整合druid无法监控sql

最近在学习springboot,然后尝试使用druid进行SQL监控,但是一直没有数据,上网搜了很久发现,依赖错了 错误依赖:1<dependency>2<groupId>com.alibaba</groupId>3<artifactId>druid-spring-boot-starter</artifactId>4<ve 查看详情

springboot整合druid(代码片段)

Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0、DBCP等DB池的优点,同时加入了日志监控。Druid可以很好的... 查看详情