溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Boot使用Druid連接池的示例代碼

發(fā)布時(shí)間:2020-08-22 14:45:00 來源:腳本之家 閱讀:349 作者:Real_man 欄目:編程語言

Druid是Java語言中最好的數(shù)據(jù)庫連接池。Druid相比于其他的數(shù)據(jù)庫連接池,有兩大特性:

  1. 監(jiān)控?cái)?shù)據(jù)庫,有利于分析線上數(shù)據(jù)庫問題
  2. 更容易擴(kuò)展,同時(shí)也很高效。

今天演示一下Spring Boot集成Druid。

實(shí)戰(zhàn)

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>

Spring Boot使用Druid連接池的示例代碼

配置Druid

2、Druid應(yīng)用的配置。

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可以直接把應(yīng)用配置的spring.datasource.druid屬性開頭的值注入到DruidDataSource中
 @ConfigurationProperties(prefix = "spring.datasource.druid")
 @Bean(initMethod = "init",destroyMethod = "close")
 public DruidDataSource druidDataSource(){
  DruidDataSource druidDataSource = new DruidDataSource();
  
  // 添加druid的監(jiān)控過濾器,當(dāng)前只演示監(jiān)控的功能,因此只有一個(gè)過濾器,可以實(shí)現(xiàn)多個(gè)過濾器
  LinkedList<Filter> filtersList = new LinkedList();
  filtersList.add(filter());
  druidDataSource.setProxyFilters(filtersList);
  
  return druidDataSource;
 }

 @Bean
 public Filter filter(){
  StatFilter statFilter = new StatFilter();
  // SQL執(zhí)行時(shí)間超過2s種的被判定為慢日志
  statFilter.setSlowSqlMillis(2000);
  //顯示慢日志
  statFilter.setLogSlowSql(true);
  //合并SQL,有時(shí),一些相同的慢日志過多影響閱讀,開啟合并功能
  statFilter.setMergeSql(true);
  return statFilter;
 }

 // 監(jiān)控的面板
 @Bean
 public ServletRegistrationBean servletRegistrationBean(){
  // 注冊(cè)自己的Sevlet
  return new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
 }
}

3、新建SQL執(zhí)行測試

使用JDBCTeplate選取數(shù)據(jù)庫中的數(shù)據(jù),我們只是演示Druid的監(jiān)控效果。

@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;
 }
}

運(yùn)行查看效果

Spring Boot使用Druid連接池的示例代碼

Spring Boot使用Druid連接池的示例代碼

Spring Boot使用Druid連接池的示例代碼

5、演示完畢

到這一步,Druid已經(jīng)可以在Spring Boot中使用了,Druid提供了很多監(jiān)控的選項(xiàng),文章篇幅有限, 只介紹一下Druid集成Spring Boot的用法。

最后

這篇文章演示了一下Druid在SpringBoot中的使用。有關(guān)Druid的使用請(qǐng)看下面的參考。

參考

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI