spring通过类路径加载xml

来源:互联网 发布:python msi包下载 编辑:程序博客网 时间:2024/06/06 09:03

参考:http://www.blogjava.net/wangkai40/archive/2009/08/28/292927.html

 

spring通过类路径加载xml的顺序
      ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("*applicationContext.xml");
参数由两部分构成。classpath和xml文件名。它们都可以支持通配符*.classpath部分可以写为classpath和classpath*,如果是classpath时,可以将它省略。


      如果文件名使用了通配符,比如/conf/**/applicationContext.xml.如果conf下和conf/sub/下都有一个applicationContext.xml,则它两个都会加载,并且如果bean定义有重复时,后加载的xml文件中定义的bean会覆盖前面的。


      如果classpath*与classpath的区别在于,classpath它首先从当前工程的class路径下找,如果找到了(会找出该路径下的所有匹配上的文件)则不再查找,没找到则再去其它类路径比如lib里去找,直到在某个lib里找到(并找出该lib下所有的xml)。classpath*会搜索整个classpath下的所有包的指定文件,这样即使同名的文件在不同的包中也都能被加载进来。

 

总结:
1.*表示零个或多个字符,**则可以表示当前包及其子包。
2.它加载是以classpath为单位的,就是说它会遍历某个classpah的所有文件。
3.查找顺序是先查找当前工程类路径,再找classpath指定的包。对于单个class,是按顶层至底层的顺序查找。