gpt4 book ai didi

Java属性: best practices?

转载 作者:行者123 更新时间:2023-11-30 03:35:23 29 4
gpt4 key购买 nike

场景:应用程序具有可以启用某些优化的算法。默认情况下,有些是打开的,有些是关闭的。在 Java 中是否有一种方便的方法来实现某种全局属性系统?

要求:

  • 必须很容易两次使用不同的设置运行程序的多个实例
  • 可从每个类访问(如果可能,无需传递任何对象)
  • 可通过命令行参数设置,例如-DenableOptimizationX
  • “标准”方式/易于用户理解

替代方案:

其中哪一个(或其他)似乎是这种情况的最佳解决方案?

最佳答案

  1. 将属性保留在 .prop 文件中。我认为这比命令行参数更好,因为
  1. it makes easy to look what all properties are being used.
  2. what is their current value,
  3. each deployment environment can have their own properties values(ex. qa, prod)
  4. you can logically group properties in different files.
  • 创建一个 PropertyFactory 类。有一个私有(private)静态最终成员propertiesMap。在此类的静态 block 中,使用所有属性文件中的值初始化propertiesMap。您现在可以从代码中的任何位置使用 propertiesMap
  • 为了方便最终用户使用,您可以为用户提供多一个选项,以在命令行参数中指定属性值。在你的静态 block 中,处理它。如果用户为某些属性提供了值,则覆盖 map 。
  • 您可以通过以下方式访问它

    PropertiesFactory.getPropertiesMap().get("key");

  • 更新

  • 您希望在运行时更改值。但这对于虚拟机参数/命令行参数/系统环境来说是不可能的。一旦程序开始执行,这些值就被固定。所以这在独立的 java 应用程序中是不可能的。
  • 如果您希望值能够更新,那么propertiesMap需要是可变的。您需要在服务器上运行此程序,其中维护了propertiesMap的实例,并且当您想要覆盖其键之一的值时,您可以在此映射上放置方法。

    关于Java属性: best practices?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051060/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com