欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

使用java.util.prefs.Preferences代替java.util.Properties

发布时间:2023/12/3 编程问答 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用java.util.prefs.Preferences代替java.util.Properties 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
典型的应用程序安装程序需要向用户询问几个选项,其中一些是配置问题,例如,应用程序应在其上运行的端口,应如何运行等。应用程序必须记住这些选项,并在每个选项中使用它们。跑。 解决此问题的标准方法是将这些选项写入属性文件,该文件可以在应用程序启动时加载。 但是随后问题又转移到其他地方,即记住安装路径,然后从安装路径加载所需的属性文件。

记住安装路径可以通过设置环境变量(例如,MYAPP_HOME)来解决。 变量可以在安装时用所需的值初始化,以便每次加载应用程序时都将设置该变量。 这是大多数项目中采用的典型解决方案。

其他解决方案

JDK提供的Preferences API可用于解决此典型问题。 首选项就像属性一样工作,但与属性不同,它们是持久的。 在背面,当写入首选项时,它将被存储到后备存储中。 当您要求首选项时,将从该存储中加载该值。 在典型的Windows计算机上,默认存储为Windows注册表,但该存储是可配置的,您可以将其更改为所需的文件,例如文件。

写首选项很简单。 与基于字符串的键/值对的属性不同,首选项具有字符串的键,但是您可以存储所有基本类型的值,例如long , boolean , double等。

public class StaticPreferenceFactory {public static void main(String args[]) throws Exception {Preferences prefsRoot = Preferences.userRoot();Preferences myPrefs = prefsRoot.node("com.myapp.preference.staticPreferenceLoader");myPrefs.put("fruit", "apple");myPrefs.putDouble("price", 40);myPrefs.putBoolean("available", false);return prefsRoot;} }

就像我们有系统变量和用户变量一样。 您可以通过调用systemRoot()获得一个系统首选项节点,并且您可以通过调用userRoot()节点获得一个用户首选项节点。 一旦首选项存储在userNode中,系统的其他用户就无法访问它,就像用户变量一样。 您可以清除通过调用clear() API编写的首选项。

public class UsePreference {public static void main(String args[]) throws Exception {Preferences myfilePrefs = Preferences.userRoot();myfilePrefs = myfilePrefs.node("com.myapp.preference.staticPreferenceLoader");System.out.println("finding fruit:"+ myfilePrefs.get("fruit", "not found") + " available :"+ myfilePrefs.getBoolean("available", true));} }

就像属性一样,检索首选项也很简单。 如果找不到该值,此处的get API会使用两个参数:要找到的键和默认值。

Spring还提供了PreferencesPlaceholderConfigurer ,可用于加载首选项。

<bean id="preferencePlaceHolder"class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"><property name="userTreePath" value="com.myapp.preference.staticPreferenceLoader" /> </bean> <bean id="myEntity" class="info.dependencyInjection.spring.factory.MyEntity"><property name="value" value="${fruit}" /> </bean>

对于我们的安装程序问题,我们可以在安装时将所有配置选项存储在“首选项”中,应用程序将只关心读取这些值。 这样,我们可以避免编写环境变量的所有麻烦,并确保每次都加载正确的变量。

参考:在我们的JCG合作伙伴 Rahul Sharma的“到目前为止之路”博客 中 , 使用java.util.prefs.Preferences代替java.util.Properties 。

相关文章 :
  • 做短,但做对!
  • 在Java 7中处理文件
  • Java泛型快速教程
  • Google Guava库必需品
  • Java最佳实践–多线程环境中的DateFormat

翻译自: https://www.javacodegeeks.com/2011/09/use-javautilprefspreferences-instead-of.html

总结

以上是生活随笔为你收集整理的使用java.util.prefs.Preferences代替java.util.Properties的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。