詳解德魯伊連接池

一、德魯伊連接池密碼要改嗎

德魯伊連接池數據庫配置文件中包含數據庫密碼,這樣會導緻密碼泄露的風險,因此建議修改德魯伊數據庫密碼。修改密碼的具體步驟如下:

public class Test {
    public static void main(String[] args) {
        String password = "oldPassword"; //舊密碼
        String newPassword = "newPassword"; //新密碼
        String druidPassword = "XXX"; //加密後的密碼

        String data = "jdbc:mysql://localhost:3306/druid";
        String encryptPassword = DruidPasswordUtil.encrypt(password, data); //加密
        if(encryptPassword .equals(druidPassword)) {
            String newEncryptPassword = DruidPasswordUtil.encrypt(newPassword, data); //加密新密碼
            System.out.println(newEncryptPassword);
        }
    }
}

二、德魯伊數據連接池配置

在使用德魯伊數據連接池之前,需要在pom文件中引入德魯伊依賴,具體如下:

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.10</version>
</dependency>

德魯伊數據連接池的配置主要包括:

1、連接池名稱設置

2、JDBC驅動設置

3、數據庫連接字符串設置

4、用戶名和密碼設置

5、連接池參數設置

6、過濾器設置

@Configuration
public class DruidConfig {
    private Logger logger = LoggerFactory.getLogger(DruidConfig.class);

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid() {
        return new DruidDataSource();
    }

    @Bean
    public ServletRegistrationBean statViewServlet() {
        //配置Druid監控平台
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //IP白名單
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //IP黑名單(共同存在時,deny優先於allow)
        servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
        //用戶名
        servletRegistrationBean.addInitParameter("loginUsername", "druid");
        //密碼
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        //是否顯示SQL監控
        servletRegistrationBean.addInitParameter("logSlowSql", "true");
        logger.info("開啟Druid監控");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean webStatFilter() {
        //配置Druid監控攔截器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new WebStatFilter());
        //過濾規則
        filterRegistrationBean.addUrlPatterns("/*");
        //過濾靜態資源
        filterRegistrationBean.addInitParameter("exclusions", "*.css,*.js,*.html,/druid/*");
        return filterRegistrationBean;
    }

}

三、德魯伊連接池教程

德魯伊連接池是目前比較流行的Java連接池之一,它不僅可以完美整合一些主流框架,而且提供了很多高級特性。

德魯伊連接池的使用流程如下:

1、添加德魯伊連接池依賴

2、在配置文件中對德魯伊連接池進行配置

3、在代碼中獲取連接池對象

4、從連接池對象中獲取連接

5、將連接返回連接池

@Configuration
public class TestConfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource);
    }

    public void test() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            //從連接池中獲取連接
            conn = dataSource.getConnection();
            String sql = "SELECT * FROM user";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while(rs.next()) {
                System.out.println("user_id:" + rs.getInt("user_id") + ",user_name:" + rs.getString("user_name"));
            }
        } catch(SQLException e) {
            e.printStackTrace();
        } finally {
            //將連接返回連接池
            try {
                if(rs != null) rs.close();
                if(pstmt != null) pstmt.close();
                if(conn != null) conn.close();
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

四、德魯伊連接池有什麼用

德魯伊連接池主要用於解決數據庫連接過多、連接被耗盡、效率低下等問題。通過使用連接池,可以避免頻繁地創建、關閉數據庫連接,提高了數據庫連接的效率和穩定性。

五、德魯伊連接池優缺點

德魯伊連接池的優點有:

1、提高了數據庫連接使用效率和穩定性

2、提供豐富的監控、統計功能,便於問題排查

3、配合Druid監控平台可以監控SQL語句

4、支持JDBC和Datasource數據源類型

德魯伊連接池的缺點有:

1、需要在應用啟動前進行初始化,佔用一定的時間

2、默認配置較為保守,沒有發揮出德魯伊連接池的高級特性

六、德魯伊連接池源碼

德魯伊連接池源碼下載地址:

https://github.com/alibaba/druid

七、德魯伊連接池配置參數

在使用德魯伊連接池時,可以對連接池進行配置參數,從而達到更好的使用效果,主要的配置參數如下:

1、initialSize:初始化連接數量

2、minIdle:最小空閑連接數量

3、maxActive:最大連接數量

4、maxWait:獲取連接等待超時時間

5、timeBetweenEvictionRunsMillis:連接空閑池中的最小生存時間

6、minEvictableIdleTimeMillis:連接池中連接最小空閑時間

7、validationQuery:用於驗證連接是否可用的SQL語句

8、testWhileIdle:空閑連接是否進行驗證

9、testOnBorrow:獲取連接時是否進行驗證

10、testOnReturn:歸還連接時是否進行驗證

八、德魯伊連接池如何銷毀

在應用關閉時,需要手動關閉德魯伊連接池,避免連接池資源未被釋放,而導致資源泄露。關閉連接池的詳細代碼如下:

@PreDestroy
public void destroy() {
    if(dataSource != null) {
        ((DruidDataSource) dataSource).close();
    }
}

九、德魯伊連接池參數說明

德魯伊連接池參數說明請參考官方文檔:

https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_DruidDataSource%E5%8F%82%E6%95%B0

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303240.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和算法 C語言貪吃蛇主要運用了以下數據結構和算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論