问题场景:
Demo工程引入a.jar,b.jar两个jar包,a.jar和b.jar下都存在同一个db.properties配置文件,读取配置信息的时候是否存在冲突和覆盖的问题?
工作中几种常用的读取方式
方式一:
Thread.currentThread().getContextClassLoader().getResourceAsStream("xxx.properties");
方式二:
Thread.class.getResourceAsStream("xxx.properties")
方式三:
Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources("xxx.properties");
while(urls.hasMoreElements()) {
InputStream inst = urls.nextElement().openStream();
}
经验证:
方式一和方式二都只能读取到一个配置文件信息,优先级由-classpath 引入jar的顺序决定,靠前的jar的配置文件具有更高的优先级。
而方式三则能读取到不同jar下的所有同名配置文件。
转载请备注原文链接。
网友评论