多个属性文件

时间:2011-02-23 16:05:15

标签: java properties

在java应用程序中,我使用.properties文件来访问与应用程序相关的配置属性 例如。
AppConfig.properties其中的内容是,

settings.user1.name=userone
settings.user2.name=usertwo
settings.user1.password=Passwrd1!
settings.user2.password=Passwrd2!  

我通过java文件访问这些属性 - AppConfiguration.java喜欢

    private final Properties properties = new Properties();
    public AppConfiguration(){
        properties.load(Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("AppConfig.properties"));
}

现在,我不想将所有键值属性保存在一个文件中,而是将它们分成几个文件(AppConfig1.properties,AppConfig2.properties,AppConfig3.properties等)。
我想知道是否可以同时加载这些多个文件。

我的问题与 - Multiple .properties files in a Java project

不相似

谢谢。

4 个答案:

答案 0 :(得分:8)

是。只需要多个加载语句。

properties.load(Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("AppConfig1.properties"));
properties.load(Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("AppConfig2.properties"));
properties.load(Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("AppConfig2.properties"));

使用属性对象可以使用所有键值对。

答案 1 :(得分:0)

如果我理解你的问题,你有两个目标:

  1. 将一个非常大的.properties文件分区为几个较小的文件,其中(键,值)对是相关的。
  2. 确保所有.properties文件同时可用,即使您使用线程同时读取它们也是如此。
  3. 如果是这种情况,我将继续将.properties分区为几个文件并编写一个新类来处理单个.properties文件的读取以及将所有结果合并到单个Properties实例中。

答案 2 :(得分:0)

由于Properties个对象实际上是map,因此您可以使用所有方法,包括putAll(...)。在您的情况下,使用单独的Properties对象加载每个Property文件,然后将它们合并到您的应用程序属性中将非常有用。

答案 3 :(得分:0)

我有2个解决方案:

  • 您可以为不同的属性文件设置不同的属性对象
  • 您可以使用putAll()合并它们。

    Properties properties1 = new Properties(); properties1.load(Thread.currentThread().getContextClassLoader() .getResourceAsStream("AppConfig1.properties")); Properties properties2 = new Properties(); properties.load(Thread.currentThread().getContextClassLoader() .getResourceAsStream("AppConfig2.properties")); Properties merged = new Properties(); merged.putAll(properties1); merged.putAll(properties2);