`
perfy315
  • 浏览: 414243 次
社区版块
存档分类
最新评论

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

阅读更多
首先 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路径)进行查找.

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

或者引用其子目录下的文件,如
<param-value>classpath:context/conf/controller.xml</param-value>


classpath*的使用:当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径,代码片段:
<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*。
分享到:
评论
4 楼 surpassno 2017-10-09  
实践下来,感觉有不一致的地方。
项目依赖
project-service 依赖于project-impl
层次结构
项目一
-project-service
--src
---main
----resources
-----applicationContext.xml(引用到project-impl项目中的config-mapper-member_info.xml 文件)

项目二
-project-impl
--src
---main
----resources
-----config-mapper-member_info.xml
运行 mvn clean install 后生成project-service 的target目录如下。
-project-service
--WEB-INF
---classes
----applicationContext.xml
---lib
----project-impl.jar
-----config-mapper-member_info.xml(解压后可看到)

按照楼主这意思“classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. ”在applicationContext.xml 引用config-mapper-member_info.xml 应该使用classpath*:, 但是实际操作使用classpath:,使用classpath*:反而报错找不到文件。请楼主大神解惑。
3 楼 GGGGeek 2016-12-17  
细节中的细节
2 楼 AKka 2015-06-05  
1 楼 弱水_穿云天 2014-11-27  
好!!!不错

相关推荐

    浅析Spring配置中的classpath:与classpath*:的区别

    Spring 配置中的classpath:与classpath*:的区别 Spring 配置中的classpath:与classpath*:的区别是 Spring 框架中一个常见的问题。本文主要介绍了这两种路径的区别、使用场景及注意事项,以帮助读者更好地理解和使用...

    详解Spring mvc的web.xml配置说明

    下面我们将详细探讨`web.xml`中涉及Spring MVC的主要配置项。 1. **监听器(Listener)** `web.xml`中的监听器允许我们在特定事件发生时执行代码,例如应用程序启动或关闭。在Spring MVC中,`org.springframework....

    web.xml配置解析[总结].pdf

    &lt;param-value&gt;/WEB-INF/classes/applicationContext-*.xml,classpath*:applicationContext-*.xml ``` 上述配置表示Spring将加载`/WEB-INF/classes`目录下以`applicationContext-`开头的XML配置文件,以及类路径(`...

    加载spring 文件,在web.xml中的配置

    在Spring框架中,Web应用程序的配置通常涉及到对`web.xml`文件的设置,这是传统的部署描述符,用于定义Servlet、监听器和其他Web组件。当我们谈论“加载Spring文件,在web.xml中的配置”时,主要是指如何在Web应用...

    javax.xml.rpc相关jar包

    将这个文件添加到项目的类路径(classpath)中,就可以解决因缺失`javax.xml.rpc`库导致的问题。 `javax.xml.rpc` API的主要组件包括: - `javax.xml.rpc.ServiceFactory`:这个接口提供了创建服务代理的工厂方法,...

    web.xml配置解析.pdf

    当web.xml中配置了`&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;`,容器启动时会调用其相关方法,初始化Spring应用上下文。ContextLoaderListener依赖于ContextLoader...

    SSH和SSI等框架常用基础配置web.xml

    在Java Web应用开发中,`web.xml`是部署描述符的核心部分,用于定义与Web应用程序相关的配置信息。对于使用SSH(Struts + Spring + Hibernate)和SSI(Struts + Spring + iBatis)等框架的应用程序而言,合理的`web....

    《物联网物流仓储管理系统》部署运维手册.pdf

    #### 四、WEB 服务器 Tomcat 6.0 安装与配置 **Tomcat 安装:** 1. **下载Tomcat安装包:** 从官方网站下载Tomcat 6.0的压缩包。 2. **解压安装包:** 解压到指定目录。 3. **配置Tomcat环境:** 设置`CATALINA_...

    Myeclipse配置环境

    - **配置classpath:** 为了使配置文件直接位于classpath下,需要在PackageExplorer视图中进行额外设置。 **11. 注释设置:** - **类型注释模板:** 设置类的注释模板,如包含描述、作者、公司等信息。 **12. ...

    ZK 6.5.0 Configuration Reference

    `web.xml` 是一个重要的配置文件,在 Java Web 应用程序中用于定义各种初始化参数、过滤器、监听器等。在 ZK 6.5.0 中,该文件被用来配置与 ZK 相关的各种组件。 - **ZKLoader**: 负责加载 ZK 库并初始化相关环境。...

    web.xml中如何设置配置文件的加载路径实例详解

    web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志、数据库、spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件可以放到 SRC目录下或者...

    web.xml配置[归纳].pdf

    在Java Web开发中,`web.xml`是应用的部署描述符,它是应用程序配置的核心,用于定义各种组件、过滤器、监听器等。以下是一些关键配置点的归纳: 1. **Spring上下文配置** 当我们需要改变`applicationContext.xml`...

    javax.xml.ws.Service 报错需要的包

    在Java开发中,`javax.xml.ws.Service` 是一个核心组件,属于Java API for XML Web Services (JAX-WS)的一部分,用于创建客户端和服务端的Web服务代理。报错通常表明缺少必要的依赖包,这可能会影响到程序的正常运行...

    JSP开发环境配置与测试.docx

    【JSP开发环境配置与测试】的文档主要针对J2EE初学者,旨在教会他们如何配置JSP开发所需的各种系统环境。以下是对该文档主要内容的详细解析: **一、实验目的** 1. **搭建Web编程环境**:确保安装并配置Java运行...

    SpringBoot配置详解

    * `logging.config`:日志配置文件的位置,默认为classpath下的`logback.xml`。 * `logging.level.*`:日志级别,例如`logging.level.org.springframework=DEBUG`。 Identity * `spring.application.name`:应用...

    struts.xml文件详解.doc

    struts.properties中的属性也可以在web.xml或struts.xml中进行配置。在web.xml中,你可以使用"init-param"标签,而在struts.xml中,你可以使用"constant"标签来设置这些属性。这样做提供了更大的灵活性,让开发者...

    spring如何摒弃hibernate.cfg.xml

    在现代的Spring应用程序中,整合Hibernate时,我们通常会选择使用Spring的IoC(Inversion of Control)容器来管理数据访问层,而不是直接依赖于Hibernate的配置文件`hibernate.cfg.xml`。这是因为Spring提供了更高级...

    错误:找不到或无法加载主类com.xxx.xxx.Application(完美解决)

    2. **更新Maven配置**:在`pom.xml`中正确设置`&lt;mainClass&gt;`标签,例如: ```xml &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-jar-plugin &lt;version&gt;3.1.0 &lt;addClasspath&gt;true ...

    ssm框架下web项目,web.xml配置文件的作用(详解)

    1. web.xml中配置CharacterEncodingFilter 在web.xml文件中,我们可以配置CharacterEncodingFilter,以确保整个Web项目的字符编码正确。CharacterEncodingFilter是一个过滤器,它可以拦截所有的请求和响应,并设置...

Global site tag (gtag.js) - Google Analytics