详解德鲁伊连接池

一、德鲁伊连接池密码要改吗

德鲁伊连接池数据库配置文件中包含数据库密码,这样会导致密码泄露的风险,因此建议修改德鲁伊数据库密码。修改密码的具体步骤如下:

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/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
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论