有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java管理配置数据的最佳方式是什么

我正在开发一个包含4种产品的产品套件。现在,所有配置数据都在XML或属性文件中。这种方法是不可维护的,因为我们必须为不同的环境(例如生产、开发等)管理不同的配置文件

那么,处理配置数据的最佳方式是什么

此外,我们可以将其模块化为单独的模块吗?这样所有产品都可以使用这个模块。 我们不想使用属性文件。我正在寻找一种解决方案,我们可以将所有特定于配置的代码作为一个新的配置模块移动,并将所有配置数据保存在数据库中


共 (4) 个答案

  1. # 1 楼答案

    如果应用程序使用数据库,则可以按如下方式创建“配置”表:

    create table configuration (mode char(3), key varchar(255), value varchar(1023));
    

    您可以使用init脚本初始化它,比如init。包含以下内容的sql:

    insert into configuration values ('pro', 'param1', 'value1'); -- production
    insert into configuration values ('dev', 'param1', 'value1'); -- development
    insert into configuration values ('tst', 'param1', 'value1'); -- testing
    ...
    

    这种方法的好处如下:

    • 您可以将脚本与 你的代码
    • 您可以轻松地将其扩展到包括 按用户或按组设置 添加用户/组id
    • 您可以在以下位置更改设置: 运行时,如果需要的话
    • 你可以使用相同的堆栈(JPA+ 刀,卡宴…)你通常 将核心应用程序数据处理到 处理配置数据
  2. # 2 楼答案

    使用commons-configuration你就有了一个统一的API来访问属性,无论它们是如何表示的。属性、xml、JNDI等。例如:

    config.properties

    jdbcHost=192.168.12.35
    jdbcUsername=dbuser
    jdbcPassword=pass
    

    config.xml

    <config>
       <jdbcHost>192.168.12.35</jdbcHost>
       <jdbcUsername>dbuser</jdbcUsername>
       <jdbcPassword>pass</jdbcPassword>
    </config>
    

    在这两种情况下,它们都可以通过以下方式访问:

    String host = config.getString("jdbcHost");
    
  3. # 3 楼答案

    有很多不同的策略。所有这些都很好,这取决于什么最适合你

    1. 构建单个工件并将配置部署到单独的位置。工件可以有占位符变量,在部署时,可以读入配置。查看Springs属性占位符。对于使用Spring的网络应用程序来说,它的效果非常好,而且不涉及操作
    2. 有一个外部化的属性配置,它位于webapp之外。保持位置不变,并始终从属性配置中读取。在任何阶段更新配置,重新启动将更新新值
    3. 如果要修改环境(即正在使用的应用程序服务器或用户/组权限),请查看在puppet或chef中使用上述方法。还可以看看如何使用这些工具管理配置文件
  4. # 4 楼答案

    环境变量几乎是最简单的方法。像其他任何时候一样设置它们,访问它们w/System.getenv("...")