亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1、簡述

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

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

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

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

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

2.1 引入依賴

在項目的 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    # 驗證連接有效性 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 來實現(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"); // 驗證 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ù)庫鏈接池可以實現(xiàn) SQL 監(jiān)控和慢 SQL 檢測, 可以實時查看連接池的狀態(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;

    /**
     * 手機號
     */
    @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 是一款功能強大的數(shù)據(jù)庫連接池,它不僅提供高性能的連接管理,還集成了豐富的監(jiān)控和安全功能。在實際項目中,通過合理的配置和優(yōu)化,可以有效提升系統(tǒng)的數(shù)據(jù)庫訪問效率。以下核心功能回顧:

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

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

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

相關(guān)文章

  • Java如何獲取視頻文件的視頻時長

    Java如何獲取視頻文件的視頻時長

    文章介紹了如何使用Java獲取視頻文件的視頻時長,包括導(dǎo)入maven依賴和代碼案例,同時,也討論了在運行過程中遇到的SLF4J加載問題,并給出了解決方案
    2025-02-02
  • Java線程安全之volatile詳解

    Java線程安全之volatile詳解

    這篇文章主要介紹了Java線程安全之volatile詳解,volatile 的存在,解決了不同內(nèi)存間拷貝的同步問題,在每一次使用或者修改時候,都去原持有內(nèi)存中去拿最新的狀態(tài),需要的朋友可以參考下
    2023-08-08
  • Java常用集合之Set和Map的用法詳解

    Java常用集合之Set和Map的用法詳解

    這篇文章將通過一些示例為大家詳細(xì)介紹一下Java常用集合中Set和Map的用法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • 一文帶你你搞懂Java的3種IO模型

    一文帶你你搞懂Java的3種IO模型

    在Java中,一共有三種IO模型,分別是阻塞IO(BIO)、非阻塞IO(NIO)和異步IO(AIO),本文將給大家詳解的介紹這三種IO模型,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • Java EE中的編碼問題及解決方案(總結(jié))

    Java EE中的編碼問題及解決方案(總結(jié))

    在JavaEE開發(fā)中,處理字符編碼問題是確保數(shù)據(jù)準(zhǔn)確傳輸和顯示的關(guān)鍵,常見的編碼問題包括表單提交亂碼、JSP頁面編碼、請求參數(shù)編碼不一致等,本文給大家介紹Java EE中的編碼問題及解決方案,感興趣的朋友一起看看吧
    2024-10-10
  • Java 讀取、獲取配置文件.properties中的數(shù)據(jù)

    Java 讀取、獲取配置文件.properties中的數(shù)據(jù)

    這篇文章主要介紹了Java 讀取、獲取配置文件.properties中的數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • SpringBoot處理接口冪等性的兩種方法詳解

    SpringBoot處理接口冪等性的兩種方法詳解

    接口冪等性處理算是一個非常常見的需求了,我們在很多項目中其實都會遇到。本文為大家總結(jié)了兩個處理接口冪等性的兩種常見方案,需要的可以參考一下
    2022-06-06
  • Nacos作為配置中心注冊監(jiān)聽器方法

    Nacos作為配置中心注冊監(jiān)聽器方法

    本文主要討論Nacos作為配置中心時,其中配置內(nèi)容發(fā)生更改時,我們的應(yīng)用程序能夠做的事。一般使用監(jiān)聽器來實現(xiàn)這步操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Java紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析

    Java紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析

    紅黑樹問題是各大計算機考研命題以及面試算法題目中的熱門,接下來我們?yōu)榇蠹覉D解紅黑樹的數(shù)據(jù)結(jié)構(gòu)與算法解析,需要的朋友可以參考下
    2021-08-08
  • java實現(xiàn)http請求工具類示例

    java實現(xiàn)http請求工具類示例

    這篇文章主要介紹了java實現(xiàn)http請求工具類示例,需要的朋友可以參考下
    2014-05-05

最新評論