springboot中加入druid对sql进行监控

ccxp      2022-04-09     802

关键词:

springboot作为现在十分流行的框架,简化Spring应用的初始搭建以及开发过程,现在我们就使用springboot来进行简单的web项目搭建并对项目sql进行监控。

项目的搭建就省略了,springboot项目搭建好以后,进行一下操作, 本例子的项目使用 maven 管理的jar

1.加入依赖, 在pom.xml文件 增加配置

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

2、
配置数据源 ,  在appcation.yml文件加入druid的数据源配置 
# 数据库访问配置
# 主数据源,默认的
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=admin

# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
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
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy

3.使用注解的方式,增加druid的过滤器 ,新增一个类 DruidStatFilter.java
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;


@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
initParams = {
@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {

}

4.使用注解的方式 增加 DruidStatViewServlet.java 服务类
import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*", initParams = {
@WebInitParam(name = "allow", value = ""), // IP白名单
@WebInitParam(name = "deny", value = ""),
// IP黑名单
@WebInitParam(name = "loginUsername", value = "admin"), // 用户名
@WebInitParam(name = "loginPassword", value = "admin*druid"), // 密码
@WebInitParam(name = "resetEnable", value = "true")})
public class DruidStatViewServlet extends StatViewServlet {

}

5.这里有个很重要的事情一定不要忘了在启动类中加上servlet的扫描注解
@ServletComponentScan(value = "自己的包")
6.按理说现在druid就搭建好了可以通过http://localhost:8080/druid/index.html进行正常访问了,但是在操作中我发现sql监控并没有起到作用,也就是并没有sql监控的记录,在多次查阅资料后,
终于找到解决办法,虽然我们在配置文件application.properties中已经配置了druid数据源,但是在这里我们需要再次将这个DataSource配置到java配置中,这里我们将这个配置直接写入到启动类中。
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource druidDataSource() {
   return new DruidDataSource();
}
 













































springboot整合druid无法监控sql

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

如何在 Spring Boot 中加入 SQL 表?

】如何在SpringBoot中加入SQL表?【英文标题】:HowtojoinSQLtablesinSpringBoot?【发布时间】:2021-09-0121:35:04【问题描述】:如何将Author类中的author_firstName和author_lastName与Book类绑定?我使用h2数据库,author_id和book_id是主键,我使用邮递... 查看详情

如何在查询中加入 MS-SQL 和 MySQL 表?

】如何在查询中加入MS-SQL和MySQL表?【英文标题】:HowcanIjoinaMS-SQLandMySQLtableinaquery?【发布时间】:2011-12-0410:57:36【问题描述】:我想对MS-SQL和MySql数据库进行连接。MS-SQL查询有效地生成了一个索引,然后我想拉回与该查询结果匹... 查看详情

sql高级查询(代码片段)

...断进行讲解:如果还有更多的查询条件,只要在下面方法中加入相对应的字段,然后添加相应的get和set方法,最后在getQueryCondition方法中加入相对应的条件判断语句if就可以了。publicclassSqlCondition//职位:用于查询的条件判断private... 查看详情

springboot配置druid数据源

springboot配置druid数据源Author:SimpleWuspringboot整合篇前言对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringData的方式进行统一管理,添加大量的自动配置,屏蔽了很多设置。引入了各种XxxTemplate和XxxRepository来简化我们... 查看详情

springboot(18)——使用alibabadruiddatasource(代码片段)

...连接池,其GitHub地址是https://github.com/alibaba/druid。需要在SpringBoot应用中使用DruidDataSource,可以在pom.xml中加入如下依赖。1.1.10版本是目前最新的一个版本。<dependency><groupId>com.alibaba</groupId><artifactId>druid 查看详情

springboot整合druid

在pom.xml中导入Druid<!--https://mvnrepository.com/artifact/com.alibaba/druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifact 查看详情

在 oracle sql developer 中加入查询快,在 odp.net 中超慢

】在oraclesqldeveloper中加入查询快,在odp.net中超慢【英文标题】:Joinqueryfastinoraclesqldeveloper,superslowinodp.net【发布时间】:2010-12-0814:56:36【问题描述】:我有一个sql查询(连接),在OracleSQLDeveloper上运行时超快(毫秒),但在使用O... 查看详情

springboot配置druid数据源

springboot整合篇前言对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringData的方式进行统一管理,添加大量的自动配置,屏蔽了很多设置。引入了各种XxxTemplate和XxxRepository来简化我们队数据访问层的操作。springboot2.0默... 查看详情

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

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

springboot使用druid记录sql脚本日志

方法一:在application.properties设置开启slf4j过滤器#开启slf4j过滤器spring.datasource.druid.filter.slf4j.enabled=true然后在logback-spring.xml文件配置日志输出<loggername="druid.sql.Statement"level= 查看详情

springboot使用druid记录sql脚本日志(代码片段)

方法一:在application.properties设置开启slf4j过滤器#开启slf4j过滤器spring.datasource.druid.filter.slf4j.enabled=true然后在logback-spring.xml文件配置日志输出<loggername="druid.sql.Statement"level= 查看详情

在sql server中加入两个视图

】在sqlserver中加入两个视图【英文标题】:Jointwoviewsinsqlserver【发布时间】:2016-07-1411:19:31【问题描述】:查看1+------+---------------+|PERSON|CONTACTLIST|+------+---------------+|A|CONT1||A|CONT2||A|CONT5||B|CONT1||B|CONT3||C|CONT2|+------+------- 查看详情

SQL 在 GROUP BY 中加入最新结果

】SQL在GROUPBY中加入最新结果【英文标题】:SQLjoinmostrecentresultsinGROUPBY【发布时间】:2018-07-2917:51:13【问题描述】:我有下表:+--------------------+----------+--------+-----------------+|JOB_RUN_DATE_TIME_ts|JOB_STATUS|JOB_NAME|UPSTREAM_JOB_NAME|+--- 查看详情

在sql中加入两列作为日期

】在sql中加入两列作为日期【英文标题】:Jointwocolumnsasadateinsql【发布时间】:2020-02-2622:03:20【问题描述】:我目前正在通过MicrosoftQuery处理一份报告,我遇到了这个问题,我需要计算过去一年的总金额。表格如下所示:ItemNumber|... 查看详情

如何在 SQL 中加入包含祖父-父-子列的表?

】如何在SQL中加入包含祖父-父-子列的表?【英文标题】:HowtojoinatablewithGrandparent-Parent-ChildcolumnsinSQL?【发布时间】:2020-09-0210:05:50【问题描述】:我有两张表hierarchy和item我想加入:hierarchy|------------------|------------------|-------------... 查看详情

如何在 SQL SERVER 中加入我的条件?

】如何在SQLSERVER中加入我的条件?【英文标题】:HowtomakejoinsinmycriteriainSQLSERVER?【发布时间】:2017-06-2011:24:30【问题描述】:我有三张桌子:**1.FT_ViewItemMovement**StoreIDItemLookupCodeQTY-------------------------------10011112111122210011112111111201111 查看详情

如何在 SQL Server Management Studio 中加入 3 列?

】如何在SQLServerManagementStudio中加入3列?【英文标题】:Howtojoin3columnsinSQLServerManagementStudio?【发布时间】:2017-08-3006:15:47【问题描述】:我需要help的脚本,了解如何使用SQL将3列合二为一。我想在结果窗口中加入列address_1、address_... 查看详情