Java Web项目读取属性文件

项目中一定会有不少常量、配置信息放在属性文件中更为合适。通过一定的方法配置,我们便可以在项目全局读取使用,甚为方便。我们以一个标准的maven项目为例,简要说明。

一、resources下存放属性文件,我们以简单的数据库连接信息为例,如 jdpc.properties

这里写图片描述
文件里的内容,就是简单的属性值:

db.user=root
db.pass=root
db.host=jdbc:mysql://10.121.32.133:3306/test?characterEncoding=UTF-8

二、我们需要一个工具类来读取这个属性文件里的各个属性值。作为一个工具类,没有必要多个实例对象的存在,因此单例。

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;

import java.util.List;

public class ConfigurationUtil {

    private static Configuration config;
    private static ConfigurationUtil configurationUtil = null;

    private ConfigurationUtil() {
    }

    //属性文件中是否包含某个key
    public static boolean containsKey(String key) {
        return config.containsKey(key);
    }

    //属性文件中某个kdy的值是否为空
    public static boolean isEmpty() {
        return config.isEmpty();
    }

    //获取整型属性
    public static int getInt(String key) {
        return config.getInt(key);
    }

    //获取列表属性
    public static List getList(String key) {
        return config.getList(key);
    }

    //获取字符串属性
    public static String getString(String key) {
        return config.getString(key);
    }

    //单例
    public static ConfigurationUtil getInstance() {
        if (configurationUtil == null) {
            configurationUtil = new ConfigurationUtil();
        }
        return configurationUtil;
    }

    //初始化全局属性
    public synchronized void initConfig(String configFile) {
        if (ConfigurationUtil.config == null) {
            try {
                DefaultConfigurationBuilder e = new DefaultConfigurationBuilder(configFile);
                ConfigurationUtil.config = e.getConfiguration();
            } catch (ConfigurationException e) {
                e.printStackTrace();
            }
        }
    }
}

三、这个工具类必须要在我们使用前就时刻准备着,因此需要在项目启动时完成初始化。我们使用一个Listener来完成这个工作
1、web.xml 文件中添加以下内容:

<listener>
        <listener-class>com.lyj.profiles.ConfigurationListener</listener-class>
</listener>

2、ConfigurationListener 类的代码如下

import org.springframework.util.ResourceUtils;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.File;

/**
 * 用于初始化配置文件
 */
public class ConfigurationListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        try {
            File file = ResourceUtils.getFile("classpath:configuration.xml");
            ConfigurationUtil.getInstance().initConfig(file.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

3、初始化类需要配合一个简单的配置文件 configuration.xml
这里写图片描述
将需要读取的所有属性文件列出,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <header>
        <result forceReloadCheck="true"></result>
    </header>
    <override>
        <system/>
        <!-- 加载Properties文件 -->
        <properties fileName="jdbc.properties"/>
    </override>
</configuration>

至此,配置完成。
四、测试使用
1、项目编译运行时,通过ConfigurationListener 对工具类进行初始化,单元测试时也可以像这样手动初始化:

ConfigurationUtil.getInstance().initConfig("configuration.xml");

2、初始化之后的使用就很简单了
以读取配置文件中的数据库用户名密码为例:

String dbUser = ConfigurationUtil.getString("db.user");
String dbPass = ConfigurationUtil.getString("db.pass");

我们的工具类也给出了获取整型、列表等数据的方法。其他比如长整型、布尔型等属性值的读取写法类似,大家根据业务需要自己编写就好了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值