最近在review别的team代码,发现有些东西绝大多数人都不太清楚, 这里分几篇文章澄清下。


比如,大多数web-based应用都采用了spring 框架,但是spring 的配置文件,一般是在web.xml中的<context-param>中定义的:

<!-- Locations of Spring Configuration Files -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:com/abc/def/app-global-config.xml,
            classpath*:com/abc/def/spring-*.xml
        </param-value>
    </context-param>


细心的人肯定发现,这里定义了2个位置:一个是classpath,一个是classpath* ,那么这2个有什么区别呢?


答案:

对于classpath: 它会去到当前应用的WEB-INF/classes目录下找相应的文件,如果任意层则用**

比如 classpath; com/abc/def/**/app-global-config.xml

而对于classpath*:则不仅会去WEB-INF/classes目录下找相应文件,还会去WEB-INF/lib中的任意jar包中相应目录下找这个文件