访问应用程序内部设置的首选方法是什么?

时间:2011-03-01 11:20:24

标签: java settings application-settings

目前我有一个单件(服务定位器)的东西,我通过类似Services.getSettings().get("my.setting");之类的东西获取我的设置。类似的调用会在代码周围散布,无论在何处都可能需要设置值。它工作得很好,但我不禁感到这不是“正确”这样做的方式(最令人烦恼的一点是事实上所有东西都耦合到这个全局对象)。在整个应用程序中访问设置的方法会更好(在“最佳实践”意义上)?如果它有帮助,我不是在谈论Web应用程序。我说的是独立的应用程序,无论是服务器端的桌面。哦,它是用Java编写的,因为我知道你会问......但是,这应该不重要,因为我正在寻找概念而不是具体的实现。

6 个答案:

答案 0 :(得分:2)

用于java桌面应用程序 使用

或使用以下文件在某个独立于平台的路径(${user.home}

中保存设置
  • 属性文件

  • xml文件

答案 1 :(得分:2)

过去,我在XML文件中对我的(java)应用程序中的各种类进行了外部化设置,并使用“控制反转(IoC)容器”(Spring Framework)来注入它们。我发现这种方法非常有用,因为它也有助于外部化对象依赖性。

答案 2 :(得分:1)

如果使用依赖项注入,则可以在目标对象中注入值。否则,这是一个很好的方法。

答案 3 :(得分:0)

如果my.setting的值只要应用程序正在运行就会保持不变,我希望将值存储在常量中。

private static final String MY_SETTING = 
    Services.getSettings().get("my.setting");

在该课程的任何地方使用MY_SETTING。您可能需要相应地更改访问修饰符。

答案 4 :(得分:0)

答案 5 :(得分:0)

在Java中,有Preferences API。这基本上是您的设置服务的标准化版本,它从各种合理的位置加载配置。这可能是对你现在如何做事情的改进,但它并没有真正改变架构,这似乎是你不满意的。

在架构方面,你可能会追求的是依赖注入;这是一个关于哪些内容已经写好的主题,我描述它似乎是徒劳的。我们的想法是,一些外部力量负责加载设置并将它们交给您的类,而不是您的代码必须伸出并拉入它们。依赖注入通常与Web应用程序相关联,但它完全可以使用它在独立的应用程序中。我认为PicoContainer甚至非常简单;我不知道Spring。