`
skzr.org
  • 浏览: 371214 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

spring通配符jar资源加载问题

阅读更多

jar资源加载问题

 

  • 问题:Spring加载jar中的:classpath*:xxx/applicationContext*.xml文件失败
  • 环境:
    1. jar文件中文件: classpath*:xxx/applicationContext*.xml
    2. Eclipse使用“导出”jar时未选择”Add directory entries”(选择后,不会出现此问题)如下图:

       
  • 分析:
    1. 代码:
      //Resource[] org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(String locationPattern) throws IOException
              protected Resource[] findPathMatchingResources(String locationPattern) throws IOException {
                      String rootDirPath = determineRootDir(locationPattern);
                      String subPattern = locationPattern.substring(rootDirPath.length());
                      Resource[] rootDirResources = getResources(rootDirPath);
                      Set<Resource> result = new LinkedHashSet<Resource>(16);
                      for (Resource rootDirResource : rootDirResources) {
                              rootDirResource = resolveRootDirResource(rootDirResource);
                              if (isJarResource(rootDirResource)) {
                                      result.addAll(doFindPathMatchingJarResources(rootDirResource, subPattern));
                              }
                              else if (rootDirResource.getURL().getProtocol().startsWith(ResourceUtils.URL_PROTOCOL_VFS)) {
                                      result.addAll(VfsResourceMatchingDelegate.findMatchingResources(rootDirResource, subPattern, getPathMatcher()));
                              }
                              else {
                                      result.addAll(doFindPathMatchingFileResources(rootDirResource, subPattern));
                              }
                      }
                      if (logger.isDebugEnabled()) {
                              logger.debug("Resolved location pattern [" + locationPattern + "] to resources " + result);
                      }
                      return result.toArray(new Resource[result.size()]);
              }
       
    2. 因为spring支持通配符加载资源,所以使用:Resource[] rootDirResources = getResources(rootDirPath);来加载目录,再定位子资源subPattern的路径,即可支持通配符加载资源
  • 大小: 76.1 KB
分享到:
评论
1 楼 skzr.org 2011-02-14  
http://download.oracle.com/javase/6/docs/api/index.html

JDK提供了一个JarFile的类

相关推荐

    Spring中使用classpath加载配置文件浅析

    本文将详细分析Spring通过classpath加载配置文件的不同情形,并提供解决加载过程中可能遇到的问题的方法。 首先,我们来看一下Spring加载配置文件的基本方式。在Spring中,可以通过ApplicationContext接口的实现类...

    Spring源码含有通配符路径解析一[文].pdf

    `在Ant风格路径匹配中通常用来匹配单个字符,但在Spring的资源加载场景下,它不被作为通配符使用。因此,试图使用`ap?-context.xml`这样的路径会导致资源找不到。 总结来说,Spring框架支持Ant风格的路径匹配,但不...

    Java使用路径通配符加载Resource与profiles配置使用详解

    Ant路径通配符是Spring提供的一种强大的通配符匹配机制,能够从一个路径匹配一批资源。Ant路径通配符支持三种通配符:?、*、。 * ?:匹配一个字符,如“config?.xml”将匹配“config1.xml”。 * *:匹配零个或多...

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

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

    spring-MVC搭建所需包(spring3.0)附带搭建源码

    - 引入Spring MVC依赖:`SpringMVCjar包`中应包含Spring MVC所需的jar文件,这些文件提供了Spring MVC的运行时环境。 - 配置web.xml:设置DispatcherServlet,加载Spring MVC的配置文件。 - 创建Spring MVC配置:...

    spring如何摒弃hibernate.cfg.xml

    在现代的Spring应用程序中,整合Hibernate时,我们通常会选择使用Spring的IoC(Inversion of Control)容器来管理数据访问层,而不是...在实际项目中,可以根据实际情况选择合适的属性,以优化资源加载和提高应用性能。

    使用yuicompressor压缩及合并js,css静态资源

    总结一下,YUI Compressor是一个强大的工具,用于优化前端资源,提升网页加载速度。它不仅可以压缩JavaScript和CSS文件,减少文件大小,还可以合并多个文件,减少HTTP请求。通过结合使用YUI Compressor和其他自动化...

    传智播客视频JavaSE学习笔记

    `classpath`环境变量用于指定Java类库或.jar文件的查找路径,确保Java虚拟机能正确加载所需的类库。配置方法类似`path`,但在“环境变量”对话框中选择“新建”创建`classpath`变量,添加类库路径即可,例如`.;C:\...

    javaSE代码实例

    10.6 Java程序的加载过程 190 10.7 小结 192 第三篇 高级基础篇 第11章 异常处理——Java世界的医生 195 11.1 异常处理的基本知识 195 11.1.1 try和catch捕获异常 195 11.1.2 异常的传播过程 198 ...

Global site tag (gtag.js) - Google Analytics