如何写一个关于配置的类

keephope 2007-02-25 11:08:55
我在程序里想写一个配置类

每次运行WEB工程的时候自动实例化

并且只能有一个实例

其中的内容是从配置文件中读取的

我想问下如何实现这个功能

读取配置文件这个可以不用去管,我有现成的代码
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
捏造的信仰 2007-02-25
  • 打赏
  • 举报
回复
另:建议参考 Log4j 的源代码,看看它是如何管理配置的。
捏造的信仰 2007-02-25
  • 打赏
  • 举报
回复
这个简单。一种方法是自己写:

import org.apache.log4j.Logger;

import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.HashMap;

/**
* .properties 配置文件读取类
*/
public class Config {

private static Logger log = Logger.getLogger(Config.class);
private static HashMap bundles = new HashMap();
private static final String BASE_NAME = "basename.of.properties.file";

/**
* 从配置文件中读取一个值
*
* @param s 键名
*
* @return 键值。如果键名不存在,则返回null。
*/
public static String getString(String s) {
try {
return getResourceBundle(BASE_NAME).getString(s);
} catch (MissingResourceException e) {
log.error("找不到配置'" + s + "请检查" + BASE_NAME.replaceAll("\\.", "/") + ".properties", e);
return "";
}
}

/**
* 从配置文件中读取一个值
*
* @param s 键名
* @param baseName 资源名称
*
* @return 键值。如果键名不存在,则返回null。
*/
public static String getString(String baseName, String s) {
try {
return getResourceBundle(baseName).getString(s);
} catch (MissingResourceException e) {
log.error("找不到配置\"" + s + "\", 请检查" + baseName.replaceAll("\\.", "/") + ".properties", e);
return "";
}
}

/**
* get config file
*
* @param baseName 资源名称
*
* @return ResourceBundle
*/
private static synchronized ResourceBundle getResourceBundle(String baseName) {
ResourceBundle bundle = (ResourceBundle) bundles.get(baseName);
if (bundle == null) {
bundle = ResourceBundle.getBundle(baseName);
bundles.put(baseName, bundle);
}
return bundle;
}
}

使用的时候只需要如下调用:
String username = Config.getString("username");


另一种方法是使用 apache commons-configuration 包。使用方法楼主自己去看吧。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧