Spring Boot使用Druid连接池的示例代码

 更新时间:2018年06月14日 09:15:31   作者:Real_man  
Druid是Java语言中最好的数据库连接池。这篇文章主要介绍了Spring Boot使用Druid连接池的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

今天演示一下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>


配置Druid

2、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/*");
 }
}

3、新建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;
 }
}

运行查看效果


5、演示完毕

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

最后

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

参考

[Druid常见用法] (https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)

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

相关文章

  • Java File类的概述及常用方法使用详解

    Java File类的概述及常用方法使用详解

    Java File类的功能非常强大,下面这篇文章主要给大家介绍了关于Java中File类的概述及常用方法使用,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • java利用jacob将word转pdf

    java利用jacob将word转pdf

    这篇文章主要为大家详细介绍了java利用jacob将word转pdf,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • SpringMVC ViewResolver视图解析器组件

    SpringMVC ViewResolver视图解析器组件

    这篇文章主要介绍了SpringMVC ViewResolver视图解析器组件,Spring MVC的视图解析器 ViewResolver 是框架中一个重要的组件,用于将控制器返回的逻辑视图名称解析为具体的视图实现对象,最终呈现给用户的是具体的视图实现
    2023-04-04
  • 解决idea 中 SpringBoot 点击运行没反应按钮成灰色的问题

    解决idea 中 SpringBoot 点击运行没反应按钮成灰色的问题

    在使用 Spring Boot 开发项目时,可能会遇到一个问题:点击运行按钮后,控制台没有任何输出,项目界面也没有显示,这种情况可能是由多种原因导致的,本文将介绍一些常见的解决方法,需要的朋友可以参考下
    2023-08-08
  • Java并发编程中的CompletableFuture使用详解

    Java并发编程中的CompletableFuture使用详解

    这篇文章主要介绍了Java并发编程中的CompletableFuture使用详解,Future接口定义了操作异步任务执行的一些方法,如获取异步任务执行的结果、取消任务的执行、判断任务是否被取消,判断任务是否执行完毕等,需要的朋友可以参考下
    2023-12-12
  • Java中的线程死锁解读

    Java中的线程死锁解读

    这篇文章主要介绍了Java中的线程死锁解读,死锁就是指两个或两个以上的线程在抢占资源时,造成相互等待的现象,称为死锁,在没有外力的情况下是会一直等待无法执行下去,需要的朋友可以参考下
    2024-01-01
  • 18个Java8日期处理的实践(太有用了)

    18个Java8日期处理的实践(太有用了)

    这篇文章主要介绍了18个Java8日期处理的实践(太有用了),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 详解springboot读取yml配置的几种方式

    详解springboot读取yml配置的几种方式

    这篇文章主要介绍了详解springboot读取yml配置的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java访问者模式实现优雅的对象结构处理

    Java访问者模式实现优雅的对象结构处理

    Java访问者模式是一种行为型设计模式,它通过将数据结构和数据操作分离,实现对复杂对象结构的处理。它将数据结构中的每个元素都转换为访问者能够识别的形式,从而使得数据操作可以在不影响数据结构的前提下进行扩展和变化
    2023-04-04
  • Java老矣 尚能饭否?

    Java老矣 尚能饭否?

    Java老矣,尚能饭否?各类编程语言横空出世,纷战不休,然而 TIOBE 的语言排行榜上,Java 却露出了明显的颓势。这个老牌的语言,未来会是怎样?
    2017-06-06

最新评论