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


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

1
2
3
4
5
6
7
8
< 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包中相应目录下找这个文件