最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用Alibaba Druid數(shù)據(jù)庫連接池的技術(shù)指南

 更新時間:2025年03月17日 11:14:08   作者:拾荒的小海螺  
Druid是阿里巴巴開源平臺上的一個項(xiàng)目,整個項(xiàng)目由數(shù)據(jù)庫連接池、插件框架和SQL解析器組成,它不僅支持高效的連接管理,還集成了 SQL 監(jiān)控、日志輸出和多種擴(kuò)展功能,本文將從 Druid 的基本概念出發(fā),結(jié)合具體樣例,帶你全面掌握 Druid 的配置與使用,需要的朋友可以參考下

1、簡述

在 Java 應(yīng)用中,數(shù)據(jù)庫連接池是數(shù)據(jù)庫訪問性能優(yōu)化的關(guān)鍵工具。阿里巴巴 Druid 是一款功能強(qiáng)大、性能卓越的數(shù)據(jù)庫連接池,它不僅支持高效的連接管理,還集成了 SQL 監(jiān)控、日志輸出和多種擴(kuò)展功能。

本文將從 Druid 的基本概念出發(fā),結(jié)合具體樣例,帶你全面掌握 Druid 的配置與使用。

2、環(huán)境準(zhǔn)備

Druid 是由阿里巴巴開源的數(shù)據(jù)庫連接池,特點(diǎn)包括:

  • 高性能:連接池性能媲美甚至超過 HikariCP。
  • SQL監(jiān)控:支持 SQL 執(zhí)行的性能統(tǒng)計、慢 SQL 檢測等功能。
  • 擴(kuò)展性強(qiáng):支持多種數(shù)據(jù)庫以及 SQL 防火墻等功能。
  • 易用性:配置簡單,提供直觀的監(jiān)控界面。

2.1 引入依賴

在項(xiàng)目的 pom.xml 文件中添加以下依賴:

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.34</version>
    <scope>provided</scope>
</dependency>

2.2 基礎(chǔ)配置

在 application.yml 文件中添加 Druid 數(shù)據(jù)源的基本配置:

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.22.181:3306/shop_admin?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
      username: shop
      password: 123456
      initial-size: 5               # 初始化連接數(shù)
      min-idle: 5                   # 最小空閑連接數(shù)
      max-active: 20                # 最大連接數(shù)
      max-wait: 60000               # 獲取連接等待超時時間
      time-between-eviction-runs-millis: 60000 # 檢測空閑連接的間隔
      min-evictable-idle-time-millis: 300000  # 最小空閑時間
      validation-query: SELECT 1    # 驗(yàn)證連接有效性 SQL
      test-on-borrow: false         # 借用連接時是否測試
      test-on-return: false         # 歸還連接時是否測試
      test-while-idle: true         # 空閑時測試連接
      stat-view-servlet:
        enabled: true
        login-username: admin      # Druid 監(jiān)控頁用戶名
        login-password: admin123      # Druid 監(jiān)控頁密碼
      web-stat-filter:
        enabled: true
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # 排除的 URL

2.3 Config 里面配置數(shù)據(jù)源

或者可以通過@Configuration 初始化DataSource 來實(shí)現(xiàn)數(shù)據(jù)源配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;

import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://192.168.22.181:3306/shop_admin?useSSL=false&serverTimezone=UTC");
        dataSource.setUsername("shop");
        dataSource.setPassword("123456");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        // Druid 特有配置
        dataSource.setInitialSize(5);      // 初始化連接數(shù)
        dataSource.setMaxActive(20);       // 最大連接數(shù)
        dataSource.setMinIdle(5);          // 最小空閑連接數(shù)
        dataSource.setMaxWait(60000);      // 最大等待時間
        dataSource.setValidationQuery("SELECT 1"); // 驗(yàn)證 SQL
        dataSource.setTestOnBorrow(false);
        dataSource.setTestOnReturn(false);
        dataSource.setTestWhileIdle(true);
        return dataSource;
    }
}

2.4 配置 Druid 監(jiān)控

Druid 提供了一個內(nèi)置的監(jiān)控頁面,訪問路徑為 /druid。在 Spring Boot 中,默認(rèn)已經(jīng)自動配置了 DruidStatViewServlet 和 WebStatFilter。啟動應(yīng)用后訪問 http://localhost:8080/druid 即可查看監(jiān)控界面。

3、數(shù)據(jù)集成樣例

使用 Druid 數(shù)據(jù)庫鏈接池可以實(shí)現(xiàn) SQL 監(jiān)控和慢 SQL 檢測, 可以實(shí)時查看連接池的狀態(tài),活躍數(shù)、空閑數(shù)等,攔截潛在危險的 SQL,我們通過合理的配置和優(yōu)化,可以有效提升系統(tǒng)的數(shù)據(jù)庫訪問效率,以下提供mybatis服務(wù)使用樣例:

package com.lm.druid.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lm.druid.entry.SysUserEntity;
import com.lm.druid.mapper.SysUserMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserService extends ServiceImpl<SysUserMapper, SysUserEntity> {

    @Resource
    private SysUserMapper sysUserMapper;

    public SysUserEntity getUserById(Long id){
        return sysUserMapper.selectById(id);
    }
}

SysUserMapper:

package com.lm.druid.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lm.druid.entry.SysUserEntity;

public interface SysUserMapper extends BaseMapper<SysUserEntity> {
}

SysUserEntity:

package com.lm.druid.entry;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
@TableName("sys_user")
public class SysUserEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 用戶ID
     */
    @TableId(value = "user_id")
    private Long userId;

    /**
     * 用戶名
     */
    @TableField("username")
    private String username;

    /**
     * 密碼
     */
    @TableField("password")
    private String password;

    /**
     * 鹽
     */
    @TableField("salt")
    private String salt;

    /**
     * 郵箱
     */
    @TableField("email")
    private String email;

    /**
     * 手機(jī)號
     */
    @TableField("mobile")
    private String mobile;

    /**
     * 狀態(tài)  0:禁用   1:正常
     */
    @TableField("status")
    private Integer status;

    /**
     * 創(chuàng)建者ID
     */
    @TableField("create_user_id")
    private Long createUserId;

    /**
     * 創(chuàng)建時間
     */
    @TableField("create_time")
    private Date createTime;
}

在Controller控制層添加測試用例:

package com.lm.druid.controller;

import com.lm.druid.entry.SysUserEntity;
import com.lm.druid.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;


    @GetMapping("/getUserByIntId")
    public SysUserEntity getUserByIntId(@RequestParam Long id) {
        return userService.getUserById(id);
    }
}

在啟動類中添加mapper映射路徑:

@SpringBootApplication
@MapperScan("com.lm.druid.mapper")
public class DruidApplication {
    public static void main(String[] args) {
        SpringApplication.run(DruidApplication.class, args);
    }
}

4、總結(jié)

Druid 是一款功能強(qiáng)大的數(shù)據(jù)庫連接池,它不僅提供高性能的連接管理,還集成了豐富的監(jiān)控和安全功能。在實(shí)際項(xiàng)目中,通過合理的配置和優(yōu)化,可以有效提升系統(tǒng)的數(shù)據(jù)庫訪問效率。以下核心功能回顧:

  • 高性能連接管理
  • SQL 監(jiān)控和慢 SQL 檢測
  • 安全防護(hù)(SQL 防火墻)
  • 易于集成的監(jiān)控界面

通過本博客,你應(yīng)該能夠快速掌握 Druid 的基本使用,并在實(shí)際項(xiàng)目中加以應(yīng)用!

到此這篇關(guān)于Java使用Alibaba Druid數(shù)據(jù)庫連接池的技術(shù)指南的文章就介紹到這了,更多相關(guān)Java使用Alibaba Druid連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JVM的7種垃圾回收器(小結(jié))

    JVM的7種垃圾回收器(小結(jié))

    這篇文章主要介紹了JVM的7種垃圾回收器(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java實(shí)現(xiàn)樹形結(jié)構(gòu)管理的組合設(shè)計模式

    Java實(shí)現(xiàn)樹形結(jié)構(gòu)管理的組合設(shè)計模式

    Java組合模式是一種結(jié)構(gòu)型設(shè)計模式,它允許將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得用戶可以使用統(tǒng)一的方式處理單個對象和對象組合,從而簡化了系統(tǒng)的設(shè)計和維護(hù)
    2023-04-04
  • mybatis3.4.0不支持LocalDateTime的解決方法(No typehandler found for property time)

    mybatis3.4.0不支持LocalDateTime的解決方法(No typehandler f

    本文主要介紹了mybatis3.4.0不支持LocalDateTime的解決方法(No typehandler found for property time),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 在Spring Boot中實(shí)現(xiàn)文件上傳與管理的操作

    在Spring Boot中實(shí)現(xiàn)文件上傳與管理的操作

    在 Spring Boot 中實(shí)現(xiàn)文件上傳與管理非常簡單,通過配置文件上傳、創(chuàng)建文件上傳、下載、列表和刪除接口,我們可以輕松地處理文件操作,結(jié)合前端頁面,可以提供一個完整的文件管理系統(tǒng),這篇文章主要介紹了在Spring Boot中實(shí)現(xiàn)文件上傳與管理,需要的朋友可以參考下
    2024-07-07
  • Java世界時區(qū)自動計算及時間生成方法詳解

    Java世界時區(qū)自動計算及時間生成方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中世界時區(qū)自動計算及時間生成的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別

    Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別

    活鎖是一種遞歸情況,其中兩個或更多線程將繼續(xù)重復(fù)特定的代碼邏輯,本文主要介紹了Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 剖析Fork?join并發(fā)框架工作竊取算法

    剖析Fork?join并發(fā)框架工作竊取算法

    這篇文章主要為大家剖析介紹了Fork?join并發(fā)框架工作竊取算法的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Java編程獲取經(jīng)緯度之間距離的方法

    Java編程獲取經(jīng)緯度之間距離的方法

    這篇文章主要介紹了Java編程獲取經(jīng)緯度之間距離的方法,涉及Java數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • java 圖片加水印實(shí)例代碼

    java 圖片加水印實(shí)例代碼

    java 圖片加水印實(shí)例代碼,需要的朋友可以參考一下
    2013-06-06
  • Mybatis逆向工程時失敗問題及解決

    Mybatis逆向工程時失敗問題及解決

    這篇文章主要介紹了Mybatis逆向工程時失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

宣威市| 贵溪市| 临海市| 独山县| 长乐市| 遂平县| 巴中市| 襄汾县| 潞城市| 清原| 平舆县| 莲花县| 潍坊市| 息烽县| 江华| 沙湾县| 青海省| 凤翔县| 息烽县| 柳州市| 漠河县| 芮城县| 同仁县| 禹城市| 宁德市| 临猗县| 台山市| 历史| 广宗县| 菏泽市| 长海县| 乌苏市| 大城县| 临武县| 永丰县| 娄底市| 博白县| 二手房| 通州市| 理塘县| 安徽省|