美文网首页探索Spring程序员SpringBoot
Spring Boot使用Druid连接池

Spring Boot使用Druid连接池

作者: Real_man | 来源:发表于2018-06-13 22:07 被阅读311次

    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>
    
    
    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. 运行查看效果


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

    最后

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

    参考

    相关文章

      网友评论

        本文标题:Spring Boot使用Druid连接池

        本文链接:https://www.haomeiwen.com/subject/chbseftx.html