首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载环境配置

如何加载环境配置
EN

Software Engineering用户
提问于 2015-08-13 09:09:17
回答 1查看 2.2K关注 0票数 5

在Java中,存储配置的典型方法是使用属性文件。所以我有几个这样的文件,每个环境类型都有一个(dev、test、prod、.)。

这种配置需要在代码库的不同部分,即不同的类中进行,但是为了避免重复将正确的文件打开到Properties对象中的代码,然后请求一个特定的属性,我决定使用一个ConfigurationLoader类来加载文件,并将属性对象保存在一个静态变量中。

代码语言:javascript
复制
public class ConfigurationLoader {
    static Properties configuration = new Properties().load(new FileReader("/path/to/my/file"));
    public static String getProperty(String propertyName) {
        return configuration.getProperty(propertyName);
    }
}

(这段代码被一个不知名的异常打破,但其思想是将配置加载到一个静态块中)

通过这种方式,只要加载了该类,所有配置都会被加载,并且只需使用ConfigurationLoader.getProperty(...)即可对任何类都可用。当然,最好不要在多个地方加载相同的属性,并且可能创建不同的“配置域”类来一劳永逸地进行解析。

然后我有两个问题:

  • 这是个好设计吗?特别是,您认为在全球范围内提供配置有什么主要缺陷吗?
  • 指定要加载哪个环境配置(-D标志、环境变量.),即使用"/path/ to /my/file“的最佳方式是什么?
EN

回答 1

Software Engineering用户

发布于 2015-08-13 18:05:34

我假设您是在应用程序容器之外,在核心java应用程序中尝试此操作。否则,属性文件不是正确的方法:部署描述符、配置存储等是正确的答案。

对于配置,最常见的思想是共用配置,它允许您将配置存储为XML/text。它有很多特性:允许像XPath一样访问配置,允许以列表形式访问多值配置元素,等等。

最不受欢迎的是你指定的那个。即使这样,它似乎也被打破了,因为它是从一个特定的相对/绝对路径。理想情况下,文件应该在类路径上,并且应该从SystemClassLoader作为InputStream读入属性。

希望这能有所帮助。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/293601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档