永发信息网

关于java web项目的一个问题

答案:2  悬赏:40  手机版
解决时间 2021-02-06 02:30
  • 提问者网友:姑娘长的好罪过
  • 2021-02-05 22:35
一般在项目中都会有一个常量类,用来配置系统所有到的所有常量,
比如:
public static String QUERY_DB = "/hibernate_query.cfg.xml";//定义hibernate文件的位置;
public static int PAGESIZE = 10;//定义分页的大小
等等。
我想,为什么不把这些常量写到一个const.properties的文件中呢:
QUERY_DB=/hibernate_query.cfg.xml
PAGESIZE=10
然后写一个读取该文件中定义的方法:
该方法根据key,得到value,这样以后要配置一个新的常量,
只要在properties文件中添加就可以了,而不用修改任何的类,
这种方法不是比第一种方法更好吗?
但事实上,项目中并没有这么做,请大家说说原因好吗?
谢谢。

第一种方式在添加一个新常量时要重新编译类,
但第二种方法就不需要重新编译类,
这样不是更具有可配置性吗。
还有,能否从这2种方式的效率上作一些对比呢 。

我写这样一个类,用来读取常量的值,是不用编译java类的:
public class ShopConst
{
private static Properties config = new Properties();
static
{
InputStream in = null;
try
{
in = ShopConst.class.getClassLoader().getResourceAsStream("properties/consts.properties");
config.load(in);
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
in.close();
} catch (IOException e)
{
}
}
}
public static String getConst(String key)
{
String value = config.getProperty(key);
if (value == null)
{
throw new RuntimeException("not exist property:" + key + ", please check!!!");
}
if (value.trim().equals(""))
{
throw new RuntimeException(" property:" + key + "'s value is blank,please check!!!");
}
return value;
}
}
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-02-05 22:45
既然是常量也就是不用再改变了,如果在加个final 就更好了。一般定义在propertyies 文件里的是有可能需要改变的,比如你想改变pagesize 那最好就是写在配置文件里了。我感觉这个要视具体情况。

补充:
如果你要添加新的常量两种方法都需要重新编译的,第一种不用说了,第二种在你读取配置文件里要添加一个要读取的属性名称,所以也要编译。

效率的话当然是静态产量高了。

这个方法不错呀! 如果考虑灵活性的话,我感觉你的方法很好,共同学习了!!!!
全部回答
  • 1楼网友:怀裏藏嬌
  • 2021-02-05 23:50
嗯嗯 要把db.properties配置文件配置上。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯