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

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

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

  1. <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.8</version>
    </dependency>
  2.  
  3. 2、
  1. 配置数据源 , appcation.yml文件加入druid的数据源配置
  1. # 数据库访问配置
  2. # 主数据源,默认的
  3. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  5. spring.datasource.url=jdbc:mysql://localhost:3306/demo
  6. spring.datasource.username=root
  7. spring.datasource.password=admin
  8.  
  9. # 下面为连接池的补充设置,应用到上面所有数据源中
  10. # 初始化大小,最小,最大
  11. spring.datasource.initialSize=5
  12. spring.datasource.minIdle=5
  13. spring.datasource.maxActive=20
  14. # 配置获取连接等待超时的时间
  15. spring.datasource.maxWait=60000
  16. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  17. spring.datasource.timeBetweenEvictionRunsMillis=60000
  18. # 配置一个连接在池中最小生存的时间,单位是毫秒
  19. spring.datasource.minEvictableIdleTimeMillis=300000
  20. spring.datasource.validationQuery=SELECT 1 FROM DUAL
  21. spring.datasource.testWhileIdle=true
  22. spring.datasource.testOnBorrow=false
  23. spring.datasource.testOnReturn=false
  24. # 打开PSCache,并且指定每个连接上PSCache的大小
  25. spring.datasource.poolPreparedStatements=true
  26. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
  27. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  28. spring.datasource.filters=stat,wall,log4j
  29. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  30. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  31. # 合并多个DruidDataSource的监控数据
  32. #spring.datasource.useGlobalDataSourceStat=true
  33. spring.jpa.database=mysql
  34. spring.jpa.show-sql=true
  35. spring.jpa.hibernate.ddl-auto=update
  36. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
  37. spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
  38.  
  39. 3.使用注解的方式,增加druid的过滤器 ,新增一个类 DruidStatFilter.java
  1. import com.alibaba.druid.support.http.WebStatFilter;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
  2.  
  3. @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
    initParams = {
    @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
    })
    public class DruidStatFilter extends WebStatFilter {
  4.  
  5. }
  6.  
  7. 4.使用注解的方式 增加 DruidStatViewServlet.java 服务类
  1. import com.alibaba.druid.support.http.StatViewServlet;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;
  2.  
  3. @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 {
  4.  
  5. }
  6.  
  7. 5.这里有个很重要的事情一定不要忘了在启动类中加上servlet的扫描注解
  1. @ServletComponentScan(value = "自己的包")
  1. 6.按理说现在druid就搭建好了可以通过http://localhost:8080/druid/index.html进行正常访问了,但是在操作中我发现sql监控并没有起到作用,也就是并没有sql监控的记录,在多次查阅资料后,
    终于找到解决办法,虽然我们在配置文件application.properties中已经配置了druid数据源,但是在这里我们需要再次将这个DataSource配置到java配置中,这里我们将这个配置直接写入到启动类中。
  1. @Bean
  2. @ConfigurationProperties(prefix="spring.datasource")
  3. public DataSource druidDataSource() {
  4. return new DruidDataSource();
  5. }
  1.  
  1.  

springboot中加入druid对sql进行监控的更多相关文章

  1. springboot 中使用Druid 数据源提供数据库监控

    一.springboot 中注册 Servlet/Filter/Listener 的方式有两种,1 通过代码注册 ServletRegistrationBean. FilterRegistration ...

  2. Springboot中mybatis控制台打印sql语句

    Springboot中mybatis控制台打印sql语句 https://www.jianshu.com/p/3cfe5f6e9174 https://www.jianshu.com/go-wild? ...

  3. springboot中使用druid和监控配置

    如果想要监控自己的项目的访问情况及查看配置信息,druid是一个很好的选择,可能你会问druid是什么?有什么用?优点是什么? Druid简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语 ...

  4. springboot中配置druid允许一次执行多条sql

    原文:https://blog.csdn.net/jiangjun0130/article/details/77868578 1:在配置文件中不需要指定wall防火墙filter. 配置如下: spr ...

  5. Springboot项目配置druid数据库连接池,并监控统计功能

    pom.xml配置依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> & ...

  6. Springboot中配置druid

    pom文件信息: <!--引入druid数据源--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> ...

  7. springboot 中 集成druid ,redis

    1,导入druid jar包 <!--引入drud--> <dependency> <groupId>com.alibaba</groupId> < ...

  8. SpringBoot中JPA使用动态SQL查询

    https://www.jianshu.com/p/f72d82e90948 可以重点关注方法二,把原生sql传入数据库去查询 好处是:更加灵活坏处是:拼接sql比较痛苦,也容易出问题,比如拼接的sq ...

  9. SQL Server监控清单

    SQL Server监控清单 一. 服务器1. 状态监控(1) 服务器是否可访问?(2) 相应的数据库服务是否启用?(3) 操作系统事件日志中的错误或告警(4) 磁盘可用空间 服务器状态监控,不管使用 ...

随机推荐

  1. 牛客假日团队赛1 I.接机

    链接: https://ac.nowcoder.com/acm/contest/918/I 题意: 一场别开生面的牛吃草大会就要在Farmer John的农场举办了! 世界各地的奶牛将会到达当地的机场 ...

  2. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  3. JS——两个原生选择器

    1. document.querySlector() 2.document.querySlectorAll() <!DOCTYPE html> <html lang="en ...

  4. 有限状态机在单片机和 Arduino 编程中的应用

    有限状态机在单片机和 Arduino 编程中的应用,个人认为在实际中这是一种思想,意味着解决一类问题. 本帖最后由 张飞 于 2015-3-4 20:18 编辑 在单片机编程中,如果在不使用操作系统的 ...

  5. 2009年3月新浪PHP面试题及答案(一)

    1. echo count(“abc”); 输出什么? 答案:1 2. 用PHP代码写出显示客户端IP与服务器IP的代码. 答案:客户端 getenv(‘REMOTE_ADDR’); 服务器端 get ...

  6. C# 多线程之线程池

    线程池System.Threading.ThreadPool,可用于发送工作项.处理异步I/O.代表其它线程等待以及处理计时器.基本用法: public void Main() { ThreadPoo ...

  7. Customers Who Never Order

    Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL qu ...

  8. Android 浮动按钮的伸缩效果

    在做项目时想增加点动感,于是就有如下效果: 实现起来也很简单,通过属性动画和recyclerview 滑动结合就很好实现了. 通过给recycleview添加一个滑动监听:通过滚动的差值来处理动画 m ...

  9. OpenSSL s_server / s_client 应用实例

    netkiller openssl tls 目录[-] 12.6. s_server / s_client 12.6.1. SSL POP3 / SMTP / IMAP 12.6.2. server ...

  10. LeetCode Word Ladder 找单词变换梯

    题意:给出两个单词,以及一个set集合,当中是很多的单词.unordered_set是无序的集合,也就是说找的序列也是无序的了,是C++11的标准,可能得升级你的编译器版本了.要求找出一个从start ...