Spring Boot使用Druid连接池

简介: Druid是Java语言中最好的数据库连接池。Druid相比于其他的数据库连接池,有两大特性:监控数据库,有利于分析线上数据库问题更容易扩展,同时也很高效。

Druid是Java语言中最好的数据库连接池。Druid相比于其他的数据库连接池,有两大特性:

  • 监控数据库,有利于分析线上数据库问题
  • 更容易扩展,同时也很高效。

今天演示一下Spring Boot集成Druid。

实战

  1. 添加Maven依赖。
    Spring Boot版本使用的是1.x的,2.x的版本druid starter还不支持。不过自定义也是没问题的。

        <!--starter-web 方便我们查看效果-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--使用Mybatis也可以,druid提供的只是连接池-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.6</version>
        </dependency>

img_9c61f4c35e57b2dc59b25de1fa29c6c7.png
image.png
  1. 配置Druid

Druid应用的配置。

server:
  port: 9011
  
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      initial-size: 5
      max-active: 10
      min-idle: 5
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      validation-query: select 1
      validation-query-timeout: 60000
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      time-between-eviction-runs-millis: 60000
      filter:
        stat:
          log-slow-sql: true
          db-type: mysql
          slow-sql-millis: 2000
      stat-view-servlet:
        login-username: druid
        login-password: druid
        allow: 127.0.0.1
        url-pattern: /druid/*
      username: root
      password: 123456
      url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8

通过JavaBean的配置更灵活一些,我们通过JavaBean来配置。

@Configuration
public class DruidConfig {

    @Bean
    public JdbcTemplate jdbcTemplate(){
        return new JdbcTemplate(druidDataSource());
    }

    // ConfigurationProperties可以直接把应用配置的spring.datasource.druid属性开头的值注入到DruidDataSource中
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    @Bean(initMethod = "init",destroyMethod = "close")
    public DruidDataSource druidDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        
        // 添加druid的监控过滤器,当前只演示监控的功能,因此只有一个过滤器,可以实现多个过滤器
        LinkedList<Filter> filtersList = new LinkedList();
        filtersList.add(filter());
        druidDataSource.setProxyFilters(filtersList);
        
        return druidDataSource;
    }


    @Bean
    public Filter filter(){
        StatFilter statFilter = new StatFilter();
        // SQL执行时间超过2s种的被判定为慢日志
        statFilter.setSlowSqlMillis(2000);
        //显示慢日志
        statFilter.setLogSlowSql(true);
        //合并SQL,有时,一些相同的慢日志过多影响阅读,开启合并功能
        statFilter.setMergeSql(true);
        return statFilter;
    }

    // 监控的面板
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
       // 注册自己的Sevlet
        return new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
    }

}
  1. 新建SQL执行测试
    使用JDBCTeplate选取数据库中的数据,我们只是演示Druid的监控效果。
@RestController
@SpringBootApplication
public class DaoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DaoApplication.class,args);
    }

    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping("/test")
    public List test(){
        final List<Integer> idList = new LinkedList<Integer>();
        jdbcTemplate.query("select * from sh_test1", new RowCallbackHandler() {
            @Override
            public void processRow(ResultSet rs) throws SQLException {
                  idList.add(rs.getInt(1));
            }
        });

        return idList;
    }

}
  1. 运行查看效果


    img_1aab2cad0f355bc8fb6585256c48264a.png
    image.png

    img_aa11ce1c779d5335f226295843a919c9.png
    image.png

    img_243035de715b3459f9daf21eab8de39a.png
    image.png
  1. 演示完毕
    到这一步,Druid已经可以在Spring Boot中使用了,Druid提供了很多监控的选项,文章篇幅有限, 只介绍一下Druid集成Spring Boot的用法。

最后

这篇文章演示了一下Druid在SpringBoot中的使用。有关Druid的使用请看下面的参考。

参考

目录
相关文章
|
21天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
4月前
|
druid Java 数据库连接
SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis
SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis
62 0
|
4月前
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
343 2
Spring Boot 3 集成 Druid 连接池详解
|
4月前
|
druid Java 关系型数据库
SpringBoot整合junit、整合Mybatis及使用Druid数据源
SpringBoot整合junit、整合Mybatis及使用Druid数据源
37 0
|
2月前
|
NoSQL Java 数据库连接
springboot整合Redis中连接池jedis与lettuce的对比和实现
springboot整合Redis中连接池jedis与lettuce的对比和实现
284 0
|
2天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
25 0
【Spring系列】Sping VS Sping Boot区别与联系
|
4月前
|
监控 druid Java
Druid【SpringBoot集成】监控数据库报错 Failed to bind properties under ‘‘ to javax.sql.DataSource 解决(含配置源码)
Druid【SpringBoot集成】监控数据库报错 Failed to bind properties under ‘‘ to javax.sql.DataSource 解决(含配置源码)
226 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
3月前
|
缓存 Java 数据库连接
微服务框架(六)Spring Boot集成Mybatis及Druid
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Spring Boot集成Mybatis,包括mybatis-generator的使用
|
3月前
|
druid Java 数据库
SpringBoot整合Druid
SpringBoot整合Druid
44 0

热门文章

最新文章