多个属性文件
在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"));
可以使用属性对象使用所有键值对。
如果我理解你的问题,你有两个目标:
- 将一个非常大的.properties文件分区为几个较小的文件,其中(键,值)对是相关的。
- 确保所有.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);