首页 > 编程 > Java > 正文

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

2019-11-26 09:54:39
字体:
来源:转载
供稿:网友

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来配置。

@Configurationpublic 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@SpringBootApplicationpublic 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)

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表