在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
不相似谢谢。
答案 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)
如果我理解你的问题,你有两个目标:
如果是这种情况,我将继续将.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);