每次取properties中一个属性时都会重新加载properties文件吗?

berg369 2009-08-17 08:55:54
多个类里多个地方会用到properties文件中的内容(所有文本都以国际化文本形式放在properties中),查了一个至少有六种方法可以获取properties的内容,例如:

//1
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

//2
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);

//3
InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);

每次获取时总要new一个Proerties对象吗?每次读取一个属性都会执行一次IO读文件吗?这岂不很没有效率,是否我需要自己做些缓存或者静态对象的处理?
...全文
188 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
berg369 2009-08-17
  • 打赏
  • 举报
回复
搜到了这个帖子:http://www.javaeye.com/topic/80665
“ResourceBundle从来就不是直接new 出来的,而是用 ResourceBundle.getBundle去获取的,java自动对其进行了软引用缓存。”
“ResourceBundle 使用的SoftReference 来缓存资源,
而,SoftReference 的特点是只要有可能对象就会被一直保存下来,但是如果内存紧张对象就被清除掉。”

这是否意味着我用ResourceBundle来获取时不需要自行处理为单例或者做缓存了。
berg369 2009-08-17
  • 打赏
  • 举报
回复
谢谢!必须用单例模式吗?为什么sun不直接处理为一个适当的类呢?属性文件肯定会多次多地点使用的啊。
这个单例应是一个取属性的工具类吗?您处理类似情况的代码能贴出来看看吗?
Alex_20 2009-08-17
  • 打赏
  • 举报
回复
用单例模式。

62,621

社区成员

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

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