Spring Boot 使用Druid详解

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能,下面来说明如何在 SpringBoot 中配置使用Druid。
步骤:

1. 在pom.xml中加载依赖

2. 在application.properties中加入数据源配置

3. 编写DruidConfiguration,通过@Bean注解的方式注入druid servlet和filter,以便提供监控页面访问

4. 浏览器访问

一、在pom.xml中加入依赖

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

二、在application.properties中加入数据源配置

################## server ################################
server.port=8080 

################## datasource ################################
spring.datasource.url = jdbc:mysql://localhost:3306/spring
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver 

#使用Druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中 

# 初始化大小,最小,最大
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 FROMDUAL
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 

################ Java Persistence Api ###########################
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
#[org.hibernate.cfg.ImprovedNamingStrategy #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5Dialect 

#暂时不用redis,所以none,spring.session.store-type=reids
spring.session.store-type=none

以上是我项目中的配置信息,大家只要关注datasource部分即可。

三、编写DruidConfiguration配置类,通过@Bean注解的方式注入druid servlet和filter,以便提供监控页面访问

package com.example.config; 

import java.sql.SQLException; 

import javax.sql.DataSource; 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
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.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter; 

/**
 * 配置druid数据源
 *
 */
@Configuration
public class DruidConfiguration { 

  private Logger logger = LoggerFactory.getLogger(DruidConfiguration.class); 

  @Bean
  public ServletRegistrationBean druidStatViewServlet() {
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
    registrationBean.addInitParameter("allow", "127.0.0.1");
    registrationBean.addInitParameter("deny", "192.168.31.234");
    registrationBean.addInitParameter("loginUsername", "admin");
    registrationBean.addInitParameter("loginPassword", "123456");
    registrationBean.addInitParameter("resetEnable", "false"); 

    return registrationBean;
  } 

  @Bean
  public FilterRegistrationBean druidWebStatViewFilter() {
    FilterRegistrationBean registrationBean = new FilterRegistrationBean(new WebStatFilter());
    registrationBean.addInitParameter("urlPatterns", "/*");
    registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"); 

    return registrationBean; 

  } 

  @Bean
  public DataSource druidDataSource(@Value("${spring.datasource.url}") String url,
      @Value("${spring.datasource.driverClassName}") String driver,
      @Value("${spring.datasource.username}") String userName,
      @Value("${spring.datasource.password}") String password,
      @Value("${spring.datasource.maxActive}") int maxActive,
      @Value("${spring.datasource.filters}") String filters,
      @Value("${spring.datasource.initialSize}")
      int initialSize,
      @Value("${spring.datasource.minIdle}")
      int minIdle,
      @Value("${spring.datasource.maxWait}")
      int maxWait,
      @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
      int timeBetweenEvictionRunsMillis,
      @Value("${spring.datasource.minEvictableIdleTimeMillis}")
      int minEvictableIdleTimeMillis,
      @Value("${spring.datasource.validationQuery}")
      String validationQuery,
      @Value("${spring.datasource.testWhileIdle}")
      boolean testWhileIdle,
      @Value("${spring.datasource.testOnBorrow}")
      boolean testOnBorrow,
      @Value("${spring.datasource.testOnReturn}")
      boolean testOnReturn,
      @Value("${spring.datasource.poolPreparedStatements}")
      boolean poolPreparedStatements,
      @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
      int maxPoolPreparedStatementPerConnectionSize,
      @Value("${spring.datasource.connectionProperties}")
      String connectionProperties,
      @Value("${spring.datasource.useGlobalDataSourceStat}")
      boolean useGlobalDataSourceStat 

  ) {
    DruidDataSource dataSource = new DruidDataSource();
    /*数据源主要配置*/
    dataSource.setUrl(url);
    dataSource.setDriverClassName(driver);
    dataSource.setUsername(userName);
    dataSource.setPassword(password); 

    /*数据源补充配置*/
    dataSource.setMaxActive(maxActive);
    dataSource.setInitialSize(initialSize);
    dataSource.setMinIdle(minIdle);
    dataSource.setMaxWait(maxWait);
    dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    dataSource.setValidationQuery(validationQuery);
    dataSource.setTestOnBorrow(testOnBorrow);
    dataSource.setTestOnReturn(testOnReturn);
    dataSource.setTestWhileIdle(testWhileIdle);
    dataSource.setPoolPreparedStatements(poolPreparedStatements);
    dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    dataSource.setConnectionProperties(connectionProperties);
    dataSource.setUseGlobalDataSourceStat(useGlobalDataSourceStat); 

    try {
      dataSource.setFilters(filters);
      logger.info("Druid数据源初始化设置成功......");
    } catch (SQLException e) {
      e.printStackTrace();
      logger.info("Druid数据源filters设置失败......");
    }
    return dataSource; 

  }
}

四、浏览器访问

在浏览器中输入http://localhost:8080/druid/index.html,首次访问需要使用账号和密码登录

在数据源一栏中,所有加"*"标识的都不能为空,,尤其是filter类名,否则会看不到SQL监控数据。

五、查看SQL监控

执行删除某条记录后,查看SQL监控

到这里,我们就把druid配置成功了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置

    一.多数据源的应用场景 目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢? Druid 是 Java 的数据库连接池组件.Druid 能够提供强大的监控和扩展功能.比如可以监控 SQL ,在监控业务可以查询慢查询 SQL 列表等.Druid 核心主要包括三部分: 1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系. 2. DruidDataSource 高效可管理的数据库连接池 3. SQLParser 当业务数据量达

  • Spring Boot使用Druid进行维度的统计和监控

    Druid Druid:一款为监控而生的数据库连接池框架,整个项目由数据库连接池.插件框架和SQL解析器组成. Druid功能介于PowerDrill和Dremel之间,它几乎实现了Dremel的所有功能,并且从PowerDrill吸收一些有趣的数据格式.Druid允许以类似Dremel和PowerDrill的方式进行单表查询,同时还增加了一些新特性,如为局部嵌套数据结构提供列式存储格式.为快速过滤做索引.实时摄取和查询.高容错的分布式体系架构等. Spring Boot spring框架作为J

  • Spring Boot集成Druid数据库连接池

    1. 前言 Druid数据库连接池由阿里巴巴开源,号称是java语言中最好的数据库连接池,是为监控而生的.Druid的官方地址是:https://github.com/alibaba/druid 通过本文,我们可以看到 Spring Boot 如何配置数据源 Spring Boot 如何集成Druid数据库连接池 如何打开并访问Druid数据库连接池的监控功能 Spring Boot 使用JdbcTemplate操作数据库 2. 配置pom.xml <parent> <groupId&g

  • 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&g

  • Spring Boot使用和配置Druid

    1.引入依赖包 <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.27</version> </dependency> 2.配置application.properties spring.datasource.type=com.alibaba.dru

  • Spring Boot 使用Druid详解

    Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能,下面来说明如何在 SpringBoot 中配置使用Druid. 步骤: 1. 在pom.xml中加载依赖 2. 在application.properties中加入数据源配置 3. 编写DruidConfiguration,通过@Bean注解的方式注入druid servlet和filter,以便提供监控页面访问 4. 浏览器访问 一.在pom.xml中加入依赖 <dependency> <groupId&g

  • Spring Boot整合Thymeleaf详解

    目录 Thymeleaf 基本介绍 基本语法 th:text文本替换 th:if和th:unless文本替换 th:each foreach循环 th:id.th:value.th:checked等(和form表单相关) 整合Thymeleaf 基本配置 三层架构 删除操作 编辑操作 用户登录 用户注销 点击注销用户 Thymeleaf 基本介绍 Spring Boot 官方推荐使用 Thymeleaf 作为其模板引擎.SpringBoot 为 Thymeleaf 提供了一系列默认配置,并且为T

  • Spring Boot事务配置详解

    1.在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的<tx:annotation-driven />注解驱动. 2.在需要事务的类或者方法上面添加@Transactional() 注解,里面可以配置需要的粒度: 这么多东西提供配置: Isolation :隔离级别 隔离级别是指若干个并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取.重复读.幻读. 我们可以看 org.springframework.

  • Spring boot整合security详解

    目录 前言 配置依赖 用户配置 1.内存用户存储 2.数据库用户存储 3.LDAP用户存储 4.自定义用户存储 拦截配置 前言 在进行框架选型时最常用的选择就是在Spring security 和Shiro中进行抉择,Spring security 和 shiro 一样,都具有认证.授权.加密等用于权限管理的功能.但是对于Springboot而言,Spring Security比Shiro更合适一些,他们都是Spring生态里的内容,并且在使用上Spring boot只需要引入Security就

  • Spring Boot构建框架详解

    什么Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式. 环境准备 一个比较不错的文本编辑器(例如Vim.Emacs.Sublime Text)或者IDE(Eclipse.Idea Intellij) Java环境(JDK 1.8或以

  • Spring Boot统一异常处理详解

    Spring Boot中默认带了error的映射,但是这个错误页面显示给用户并不是很友好. 统一异常处理 通过使用@ControllerAdvice定义统一异常处理的类,而不是在每个Controller中逐个定义. @ExceptionHandler用来定义函数针对的函数类型,最后将Exception对象和请求URL映射到URL中. @ControllerAdvice class ExceptionTranslator { public static final String DEFAULT_E

  • spring boot 日志配置详解

    最近在学习spring boot框架的路上,今日看了一下spring boot日志配置,顺便留个笔记记录一下. 1.新建logback.xml文件 内容如下: <!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="10 seconds"> <include res

  • Spring Boot日志控制详解

    Spring Boot对日志的处理,和我们平时的日志处理完全一致,通过logback.xml进行日志管理功能.为了简便,这里采用"Spring Boot构建框架"一章节使用的工程,讲述如何在Spring Boot中处理日志. 第一步,虽然Spring Boot中application.properties配置文件提供了日志的配置,但是个人更倾向于旧的配置方式.在src/main/resources目录中增加logback.xml日志文件,文件内容如下(配置相对简单,个人请根据工程情况,

  • 如何优雅的处理Spring Boot异常信息详解

    Spring Boot 异常处理 异常处理是一种识别并响应错误的一致性机制,异常机制可以把程序中的异常处理代码和正常的业务逻辑代码分离,包装程序的可读性和健壮性.在Spring Boot应用程序中,能够捕获并及时的响应客户端的错误操作是一件非常重要的事情.在本章节中,我将展示如何处理Spring Boot中的异常. 1. 相关注解说明 在进行演示之前,我们先了解一下在Spring Boot应用程序中与异常处理相关的几个注解 注解名称 说明 @ControllerAdvice 该标签用于处理全局的

  • 在Docker中部署Spring Boot项目过程详解

    微服务现在在互联网公司可谓非常流行了,之前找工作的的时候很多HR电话约面试的时候都会问对微服务是否有过接触.而微服务和Docker可以非常完美的结合,更加方便的实现微服务架构的落地.作为微服务中的代表SpringBoot框架,今天我们就来了解一下如何在Docker容器中运行一个SpringBoot应用. 创建Spring Boot程序 在这篇文章中我们将在Docker容器中运行一个简单的SpringBoot的Web应用,下面是初始时刻的pom.xml中的内容. <?xml version="

随机推荐