zoukankan      html  css  js  c++  java
  • web.xml 配置中 classpath: 与 classpath*: 的区别

    首先,classpath指的是WEB-INF文件下的classes目录。

    其次,这种写法其实是spring的写法,与web.xml无关。可以使用spring的方法对使用这种写法路径的读取。

    classpath和classpath*的区别:

    classpath:

    • 只会到你当前的class路径下去查找配置文件。
    • 此配置表示告诉web容器去classpath(WEB-INF/classes/和WEB-INF/lib/)中去加载指定的配置文件,若是有同名文件则只加载第一个
    • 只会先在WEB-INF/classes/路径下查找,找到则停止;找不到则到WEB-INF/lib/路径下继续查找,直到找到,否则抛异常。

    classpath*:

    • 不仅包括class路径,还包括jar包中的class路径下进行查找。
    • 因为classpath*是需要遍历所有class路径,所以比较慢,因此规划的时候应该尽可能的规划好资源文件存储路径,避免使用classpath*。
    • 此配置表示告诉web容器去classpath(WEB-INF/classes/和WEB-INF/lib/)中去加载指定的配置文件,若是有同名文件则全部加载

    补充:

    1. 【**/】表示的是任意目录;【**/applicationContext*.xml】表示查找任意目录下以applicationContext开头的xml文件。
    2. 程序部署到Tomcat之后,src目录下的文件会和class文件一样,自动copy到应用的WEB-INF/classes/目录下;
    3. classpath和classpath*的区别在于,前者只会从第一个classpath路径下加载,后者会遍历全部classpath路径。
    4. 如果要加载的资源不在当前classloader的路径里,那么使用classpath:前缀是找不到资源文件的,这种情况下需要使用classpath*。
    5. 存在多个同名配置文件都需要加载时,也需要使用classpath*,classpath:只会加载第一个。
  • 相关阅读:
    linux service 例子
    YII2自动初始化脚本
    ubuntu 如何在命令行打开当前目录
    mysql 储存过程
    Mysql 随笔记录
    Lack of free swap space on Zabbix server
    意外发现PHP另一个显示转换类型 binary
    常用的排序代码
    线程的实现方式之内核支持线程和用户级线程
    寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)
  • 原文地址:https://www.cnblogs.com/AbnerRao/p/12867373.html
Copyright © 2011-2022 走看看