一、德鲁伊连接池密码要改吗
德鲁伊连接池数据库配置文件中包含数据库密码,这样会导致密码泄露的风险,因此建议修改德鲁伊数据库密码。修改密码的具体步骤如下:
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