资源地址表达式的使用
关于"classpath:“和"classpath*:”:
假设有多个jar包或者文件系统都拥有一个相同的包名(com.smart),"classpath:"只会在第一个加载的com.smart包的类路径下查找,而“classpath*:”会扫描所有这些jar包及类路径下出现的com.smart类路径。
有一个名为smart的应用分为三个模块,一个模块对应一个配置文件,分别是module1.xml、module2.xml、module3.xml,都放到com.smart目录下,每个模块达成jar包。使用"classpath*:com/smart/module*.xml"可以成功加载这3个模块的配置文件,而使用"classpath:com/smart/module*.xml"只会加载一个模块的配置文件。
Ant风格的资源地址支持3种匹配符
?:匹配文件名中的一个字符。
:匹配文件中的任意字符
**:匹配多层路径
下面是几个Ant风格的资源路径的示例。
classpath:com/t?st.xml:匹配com路径下的com/test.xml、com/tast.xml或者com/txst.xml文件。
file:D:/conf/.xml:匹配文件系统D:/conf目录下所有以.xml为后缀的文件。
classpath:com/**/test.xml:匹配com路径下(当前目录及其子孙目录)的test.xml文件。
classpath:org/springframework/**/*.xml:匹配类路径org/springframework下所有以.xml为后缀的文件。
classpath:org/**/servlet/bla.xml:不仅匹配类路径org/springframework/servlet/bla.xml,也匹配org/springframework/testing/servlet/bla.xml,还匹配org/servlet/bla.xml。
本文详细解释了classpath:和classpath*:的区别,以及Ant风格的资源路径匹配符的使用方法,包括?、*和**的含义,通过实例展示了如何在Java环境中精确定位和加载资源文件。
1108

被折叠的 条评论
为什么被折叠?



