web.xml 配置中classpath: 与classpath*:的区别

首先 classpath是指 WEB-INF文件夹下的classes目录tomcat

解释classes含义: 1.存放各类资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl 3.存放class文件 对应的是项目开发时的src目录编译文件 总结:这是一个定位资源的入口app

若是你知道开发过程当中有这么一句话:惯例大于配置 那么也许你会改变你的想法性能

对于第二个问题 这个涉及的是lib和classes下文件访问优先级的问题: lib>classes 对于性能的影响应该不在这个范畴spa

classpath 和 classpath* 区别: classpath:只会到你的class路径中查找找文件; classpath*:不只包含class路径,还包括jar文件中(class路径)进行查找.xml

Java代码 收藏代码 <param-value>classpath:applicationContext-*.xml</param-value>资源

或者引用其子目录下的文件,如 Java代码 收藏代码 <param-value>classpath:context/conf/controller.xml</param-value>开发

classpath的使用:当项目中有多个classpath路径,并同时加载多个classpath路径下(此种状况多数不会遇到)的文件,就发挥了做用,若是不加,则表示仅仅加载第一个classpath路径,代码片断: Java代码 收藏代码 <param-value>classpath:context/conf/controller*.xml</param-value>部署

另外: "/" 表示的是任意目录; "/applicationContext-.xml" 表示任意目录下的以"applicationContext-"开头的XML文件。
程序部署到tomcat后,src目录下的配置文件会和class文件同样,自动copy到应用的 WEB-INF/classes目录下 classpath:与classpath
:的区别在于,it

前者只会从第一个classpath中加载,而 后者会从全部的classpath中加载io

若是要加载的资源, 不在当前ClassLoader的路径里,那么用classpath:前缀是找不到的, 这种状况下就须要使用classpath*:前缀

在多个classpath中存在同名资源,都须要加载, 那么用classpath:只会加载第一个,这种状况下也须要用classpath*:前缀

注意: 用classpath*:须要遍历全部的classpath,因此加载速度是很慢的,所以,在规划的时候,应该尽量规划好资源文件所在的路径,尽可能避免使用classpath*。

相关文章
相关标签/搜索