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

Java 访问应用程序内部设置的首选方式是什么?,java,settings,application-settings,Java,Settings,Application Settings,目前,我有一个单例(服务定位器)功能,通过Services.getSettings().get(“my.setting”)之类的方式获取设置。像这样的调用被大量地散布在代码周围,无论在什么地方需要设置值。它工作得很好,但我忍不住觉得它不是这样做的“正确”方式(最令人烦恼的是,所有东西都与这个全局对象耦合在一起)。在整个应用程序中访问设置有哪些更好的方法(从“最佳实践”的角度来看)?如果有帮助的话,我不是说web应用程序。我说的是独立应用程序,无论它们是服务器端的桌面应用程序。哦,它是用Java写

目前,我有一个单例(服务定位器)功能,通过
Services.getSettings().get(“my.setting”)之类的方式获取设置。像这样的调用被大量地散布在代码周围,无论在什么地方需要设置值。它工作得很好,但我忍不住觉得它不是这样做的“正确”方式(最令人烦恼的是,所有东西都与这个全局对象耦合在一起)。在整个应用程序中访问设置有哪些更好的方法(从“最佳实践”的角度来看)?如果有帮助的话,我不是说web应用程序。我说的是独立应用程序,无论它们是服务器端的桌面应用程序。哦,它是用Java写的,因为我知道你会问。。。不过这并不重要,因为我在寻找概念而不是具体的实现。

如果
my.setting
的值在应用程序运行期间保持不变,我希望将该值存储在一个常量中

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

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

如果
my.setting
的值在应用程序运行期间保持不变,则我希望将该值存储在常量中

private static final String MY_SETTING = 
    Services.getSettings().get("my.setting");
并在该类中的任何地方使用
MY_SETTING
。您可能需要相应地更改访问修饰符。

适用于java桌面应用程序 使用

或者使用以下文件保存某些平台无关路径的设置(
${user.home}

  • 属性文件

  • xml文件

用于java桌面应用程序 使用

或者使用以下文件保存某些平台无关路径的设置(
${user.home}

  • 属性文件

  • xml文件


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

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

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

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

总是有

普通Java 对于特定于语言环境的设置,有

也可以通过使用一些DI框架(如Spring/Guice等人)来注入这些功能

这里有一些教程和示例

希望对你有所帮助

普通Java 对于特定于语言环境的设置,有

也可以通过使用一些DI框架(如Spring/Guice等人)来注入这些功能

这里有一些教程和示例

希望这对Java有所帮助,这里有。这本质上是设置服务的标准化版本,它从各种合理的位置加载配置。这可能比你现在做事情的方式有所改进,但它并没有真正改变架构,这似乎是你不满意的

在架构方面,您可能需要的是依赖注入;这是一个已经写了很多文章的话题,我来描述它似乎是徒劳的。这样做的想法是,一些外力承担了加载设置并将它们交给类的任务,而不是代码必须伸出手来将它们拉进来。依赖注入通常与web应用程序相关联,但完全可以在独立应用程序中使用它。我认为使用PicoContainer甚至非常简单;我对Spring一无所知。

在Java中,有一个。这本质上是设置服务的标准化版本,它从各种合理的位置加载配置。这可能比你现在做事情的方式有所改进,但它并没有真正改变架构,这似乎是你不满意的


在架构方面,您可能需要的是依赖注入;这是一个已经写了很多文章的话题,我来描述它似乎是徒劳的。这样做的想法是,一些外力承担了加载设置并将它们交给类的任务,而不是代码必须伸出手来将它们拉进来。依赖注入通常与web应用程序相关联,但完全可以在独立应用程序中使用它。我认为使用PicoContainer甚至非常简单;我对Spring一无所知。

好的ol'Java属性和ResourceBundle呢?好的ol'Java属性和ResourceBundle呢?这只是使用什么,而不是如何使用它。它回答了什么以及如何回答你是对的,非常抱歉,我读的是“属性”,而不是“首选项”。抱歉。这只是使用什么,而不是如何使用它。它回答了什么以及如何正确。非常抱歉,我读的是“属性”,而不是“首选项”。抱歉。所以你说DI就是这样,不管你注入什么(属性、ResourceBundle、MySettingClass)?当已经使用DI框架时,它是有意义的,因为它是注入的完美候选,你甚至可以通过使用bean属性在上下文定义中保留你的设置。但是我不会为了应用程序设置管理的唯一目的而使用DI框架。所以你说DI就是一种方式,不管你注入了什么(属性、ResourceBundle、MySettingClass)?当