SpringMVC配置多个properties文件之通配符
在springmvc中配置加载properties文件一般会在
xml文件中配置如下
<context:property-placeholder location="classpath:resources/properties/zza.properties"
ignore-unresolvable="true" />
如果希望在项目中添加了一个新的模块,并且希望新的模块和之前项目相对独立,需要新添加一个properties文件的话,那么需要在xml配置文件中,再配置一份。比如:
<context:property-placeholder location="classpath:resources/properties/zza.properties"
ignore-unresolvable="true" />
<context:property-placeholder location="classpath:resources/properties/weixin.properties"
ignore-unresolvable="true" />
这样做就太麻烦了,每次添加完properties文件还得在xml文件中添加。并且还必须把ignore-unresolvable属性设置为true。
解决方案是:利用通配符
具体如下:
<context:property-placeholder location="classpath*:resources/properties" separator for its "war:" protocol.
int prefixEnd = (locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 :
locationPattern.indexOf(":") + 1);
if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) {
// a file pattern
return findPathMatchingResources(locationPattern);
}
else {
// a single resource with the given name
return new Resource[] {getResourceLoader().getResource(locationPattern)};
}
}
}
思路都很简单,配置的头尾解析出目录和含有通配符的文件,然后依次去找哪些文件满足
不过很遗憾的是,如果是http开头的通配符路径,暂时是不支持的,支持classpth,jar等方式
不过让人欣慰的是,是可以重写文件加载方式的,原因很简单,http目录知道了,要知道目录下面有哪些文件还是很简单的(需要开启iis的目录浏览),然后取到所有文件后,如果和通配符匹配,则加载
虽然有远端服务了,但是远端服务只是一个默认的全局配置,
为了方便本地修改部分参数进行调试,所以在需要的时候,修改部分xml地址为classpath中的,只是在提交代码的时候不要提交
若的确需要修改,则可以通知有服务器操作权限的人(我们公司比如我 ^_^)进行全局修改
以上仅为个人项目经验,其实就是把默认的classpath修改为了http,多思考,多总结,多实践,小改动,大用处。希望能给大家一个参考,也希望大家多多支持编程网。