• classpath与clsspath*


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

    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路径)进行查找

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

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

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

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

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

    classpath*:的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定的规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来.

    classpath*:的加载使用了classloader的 getResources() 方法,如果是在不同的J2EE服务器上运行,由于应用服务器提供自己的classloader实现,它们在处理jar文件时的行为也许会有所不同。 要测试classpath*: 是否有效,可以用classloader从classpath中的jar文件里加载文件来进行测试:getClass().getClassLoader().getResources("<someFileInsideTheJar>")

    用classpath*:需要遍历所有的classpath,会使加载速度变慢

  • 相关阅读:
    ubuntu 下 apt-get update 错误
    'unable to run mksdcard sdk tool" when instll android studio on ubuntu14.10以后版本
    ubuntu下安装sougou
    ubuntu下安装jdk1.8.0_91
    ubuntu update时出现错误
    android studio中R文件变红并报错
    git使用
    Android新手须知
    css初级之框模型
    css初级之边框
  • 原文地址:https://www.cnblogs.com/dyc940210/p/6738516.html
Copyright © 2020-2023  润新知