【转】http://perfy315.iteye.com/blog/2009258

首先 classpath是指 WEB-INF文件夹下的classes目录 ,指的就是java文件编译之后的path。

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

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

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

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

<param-value>classpath:applicationContext-*.xml</param-value>  

或者引用其子目录下的文件,如

  1. <param-value>classpath:context/conf/controller.xml</param-value>

classpath*的使用:当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径,代码片段:

  1. <param-value>classpath*:context/conf/controller*.xml</param-value>

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

前者只会从第一个classpath中加载,而 
后者会从所有的classpath中加载

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

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

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

最新文章

  1. JavaScript将字符串中的每一个单词的第一个字母变为大写其余均为小写
  2. JWS ,JAX-WS ,JAX-RS,REST,Restlet,SOAP 相关概念
  3. Linux 下自解压文件的制作
  4. CSS3 动画基础
  5. 图解Android - Android GUI 系统 (5) - Android的Event Input System
  6. html5的自定义data-*属性与jquery的data()方法的使用
  7. B树、B-树、B+树、B*树详解
  8. docker在Centos上的安装
  9. 【BZOJ1997】Planar(2-sat)
  10. Oracle查询优化改写--------------------范围处理
  11. 【iOS】OC-时间转化的时区问题
  12. [Abp vNext 源码分析] - 3. 依赖注入与拦截器
  13. 流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月
  14. ArcPy批量计算Mean Center的两个实例
  15. luogu P3243 [HNOI2015]菜肴制作
  16. Spring Boot异常处理
  17. IASetIndexBuffer Offset
  18. vue:一个vue可以使用的视频插件
  19. listview点击checkbox,修改值
  20. TableView中Label自适应高度

热门文章

  1. Java Socket 入门2 Java与C# Socket 通信
  2. BootStrap学习2 typeahead
  3. C#计算时间差。
  4. 使用 Windows Media Center 远程控制
  5. linux下c/c++方式访问curl的帮助手册
  6. 为什么webview.loadUrl(&quot;javascript:function() &quot;)不执行?
  7. 大一C语言结课设计之《简单计算器》
  8. 邮件发送 emailsend .net开发
  9. asp.net传值
  10. 【转】How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Android x86 Emulator