多个属性文件

在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等)。
我想知道是否可以同时加载这些多个文件。

我的问题与Java项目中的多个.properties文件不相似

谢谢。

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

 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. 将一个非常大的.properties文件分区为几个较小的文件,其中(键,值)对是相关的。
  2. 确保所有.properties文件同时可用,即使您使用线程同时读取它们也是如此。

如果是这种情况,我将继续将.properties分区为几个文件并编写一个新类来处理单个.properties文件的读取以及将所有结果合并到单个Properties实例中。

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

我有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);