Spring Boot使用Druid连接池

  1. 云栖社区>
  2. 博客>
  3. 正文

Spring Boot使用Druid连接池

艾贺 2018-06-13 22:07:00 浏览538
展开阅读全文

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的使用请看下面的参考。

参考

网友评论

登录后评论
0/500
评论
艾贺
+ 关注