[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)

复制代码
package BaseDAO;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

//创建连接和释放连接的工具类
public class JDBCUtil {
    private static DataSource ds;
    private static Properties properties;//只是在堆里创建了个存放properties地址的空间
    static {
        try {
            properties = new Properties(); // 👈 必须先初始化!引用变量未指向有效对象,调用方法会报空指针
            properties.load(JDBCUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
            throw new ExceptionInInitializerError("Failed to initialize JDBCUtil: " + e.getMessage());
        }
    }


    public static Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static void close(Connection connection){
        if(connection != null){
            try {
                connection.close();//归还线程池
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

如果不初始化

相关推荐
陈年老古董11 小时前
MediaPipe 姿态检测与脸部关键点检测
笔记·python·opencv·学习·dlib
伞伞悦读11 小时前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
Ticnix11 小时前
42 天 71 次提交之后,我重新看了一遍自己的架构决策
python·agent·全栈
CCCCCCCCharlie11 小时前
Linux进程控制四大核心操作
linux·开发语言
Ticnix11 小时前
我调了三个月 overlap=50,它其实一次都没生效
后端·python·agent
DanCheng-studio12 小时前
毕设项目分享 大数据B站数据分析可视化系统
python·毕业设计·毕设
Brilliantwxx12 小时前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件
外收内放12 小时前
数据分析(jupyter与pandas初体验)
python·学习
wuyk55512 小时前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
邪修king12 小时前
Re:Linux 系统篇(三十四):进程间通信开篇Chapter1 —— 匿名管道 pipe 深度拆解与代码实战
android·linux·运维·开发语言