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中内部类的概念与分类详解

    Java中内部类的概念与分类详解

    一个类的定义放在另一个类的内部,这个类就叫做内部类,下面这篇文章主要给大家介绍了关于Java中内部类的概念与分类的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • Intellij IDEA如何设置代理

    Intellij IDEA如何设置代理

    这篇文章主要介绍了Intellij IDEA如何设置代理问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Java服务刚启动时接口超时排查全过程

    Java服务刚启动时接口超时排查全过程

    这篇文章主要为大家介绍了Java服务刚启动时,一小波接口超时排查全过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • java抽象类和接口定义与用法详解

    java抽象类和接口定义与用法详解

    这篇文章主要介绍了java抽象类和接口定义与用法,结合实例形式详细分析了java抽象类和接口的基本概念、原理、定义、使用方法及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • gradle项目中资源文件的相对路径打包技巧必看

    gradle项目中资源文件的相对路径打包技巧必看

    这篇文章主要介绍了gradle项目中资源文件的相对路径打包技巧必看篇,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • SpringCloud使用FFmpeg对视频压缩处理的代码示例

    SpringCloud使用FFmpeg对视频压缩处理的代码示例

    在现代的视频处理系统中,压缩视频以减小存储空间、加快传输速度是一项非常重要的任务,FFmpeg作为一个强大的开源工具,广泛应用于音视频的处理,包括视频的压缩和格式转换等,本文将通过Java代码示例,向您展示如何使用FFmpeg进行视频压缩,并介绍相关参数的设置
    2024-11-11
  • SpringSecurity+Redis认证过程小结

    SpringSecurity+Redis认证过程小结

    这篇文章主要介绍了SpringSecurity+Redis认证过程小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 详解SpringBoot如何优雅的处理免登录接口

    详解SpringBoot如何优雅的处理免登录接口

    在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的,常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径,本文介绍一个更优雅的方法自定义注解的方式,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java死锁产生原因及示例

    Java死锁产生原因及示例

    本文主要介绍了Java死锁产生原因及示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • kafka监听问题的解决和剖析

    kafka监听问题的解决和剖析

    这篇文章主要给大家介绍了关于kafka监听问题的解决和剖析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论