[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();
            }
        }
    }
}

如果不初始化

相关推荐
还是大剑师兰特几秒前
pinia-plugin-persistedstate详解与Vue3使用示例
开发语言·javascript·ecmascript
方便面不加香菜3 分钟前
C++ 类和对象(二)
开发语言·c++
至此流年莫相忘3 分钟前
数据库迁移工具——Alembic
python
@大迁世界4 分钟前
20.“可复用组件”具体指的是什么?如何设计与产出这类组件?.
开发语言·前端·javascript·ecmascript
有味道的男人5 分钟前
电商效率翻倍:用 Open Claw 对接 1688 接口,快速实现图片选品 + 货源监控
java·开发语言·数据库
froginwe115 分钟前
Chart.js 雷达图:深入解析与实际应用
开发语言
枫叶丹46 分钟前
【HarmonyOS 6.0】屏幕管理新特性:多屏坐标转换详解
开发语言·华为·harmonyos
Dxy12393102168 分钟前
Python有哪些方法可以进行文本纠错
开发语言·python
fengci.18 分钟前
php反序列化(复习)(第四章)
android·开发语言·学习·php·android studio