admin管理员组

文章数量:1641859

一、前言

我们在进行编程开发时,常常需要用到一些配置信息,比如配置jdbc的连接属性,如果硬编码在java代码中,则不利于维护,比如数据库位置发生了迁移,还得去改代码。最佳的方式应该放在配置文件中:如xml文件、properties文件等,利于维护。下面我们就来封装一个Properties工具类。

二、属性文件

我们以数据路连接信息为例

在src(后面会详解,便于直接使用jdbc.properties名称加载)下新建文件:jdbc.properties

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
username = root
password = root
三、封装PropertisUtil

import java.io.IOException;
import java.util.Properties;

public class PropertiesUtil {
    private static Properties properties = null;
    // 初始化
    static {
        properties = new Properties();
        try {
            properties.load(PropertiesUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    // 获取值
    public static String getValue(String key) {
        return properties.getProperty(key);
    }

}

由于Properties是线程安全的,故我们只需维护一个实例即可。
路径问题:jdbc.properties与PropertiesUtil可以在不同的文件夹下(source folder)、但jdbc.properties不能放在包中。
也可以使用真实路径,使用Bufferreader来加载,参考load需要传入的参数。
测试:

public class Main {
    public static void main(String[] args) {
        System.out.println(PropertiesUtil.getValue("driver"));
        System.out.println(PropertiesUtil.getValue("url"));
        System.out.println(PropertiesUtil.getValue("username"));
        System.out.println(PropertiesUtil.getValue("password"));
    }
}

当然这里的工具类有几个问题:
一个是jdbc.propertis还是硬编码的,
第二个是没有写修改属性等方法,
第三个是单例模式创建问题。
由于实际使用过程中,一般都只涉及读取。第二个问题不用考虑,第一个问题将propertis的配置文件作为参数传入。第三个问题需要加入私有构造和双重检查机制创建单例对象。

本文标签: 工具PropertiesUtil