0,
There is special support for retrieving multiple class path resources with the same name, via the "classpath*" prefix. For example, "classpath*:/beans.xml" will find all beans.xml files in the class path, be it in "classes" directories or in JAR files. This is particularly useful for auto-detecting config files.
1,
Hmm..After reading PathMatchingResourcePatternResolver, it looks like classpath* prefix should work with wildcards in mutliple JARs. My test showed it worked for contexts in WEB/classes, but not with a mix in WEB-INF/classes, and some in JARs in WEB-INF/lib. Maybe a bug?
Just updating this post...
OK - just to clarify after feedback from Juergen. classpath*: and wildcards do work, but not from the root directory within JARs. So for application contexts in the classpath at:
/com/company/applicationContext.xml
/com/company/applicationContext-ds.xml
If they're in WEB-INF/classes the following will work:
classpath*:**/applicationContext*.xml
If they're in a JAR in WEB-INF/lib the following will work:
classpath*:/com/**/applicationContext*.xml
2,
When you use 'classpath:' for an Ant style wildcard search, Spring uses a single classpath directory for the search. The documentation is vague, but it seems the directory returned will be the first one provided by ClassLoader.getResources(""). In our case, it returned the '/target/test-classes' directory that contains applicationTest.xml and our test classes, instead of '/target/classes' which contains application.xml and all the *.hbm.xml files.
Using the 'classpath*:' prefix fixes the problem. It indicates that the resource loader should look in all directories on the classpath, so making this change solved our problem. Apparently Spring maintains both prefixes because limitations in the Classloader (at the specification level) make it difficult to search for resources in the classpath root when performing wildcard searches across all classpath directories. This suggest it might be good practice to always create a directory to contain resources you might otherwise want to put in the classpath root and always use the 'claspath*:' prefix.
分享到:
相关推荐
Spring 配置中的classpath:与classpath*:的区别 Spring 配置中的classpath:与classpath*:的区别是 Spring 框架中一个常见的问题。本文主要介绍了这两种路径的区别、使用场景及注意事项,以帮助读者更好地理解和使用...
- 如果同时存在目录和jar包,且没有使用classpath*前缀,Spring默认只会加载目录下的配置文件。 2. **使用通配符**:当路径中包含通配符(如`**/*`)时,Spring将尝试加载所有匹配的配置文件。例如: - 如果配置...
7. **SpringDemo**:这可能是项目中的一个示例或演示,展示了如何加载和使用类路径下的Spring配置文件,以及如何集成其他库,如MyBatis。 综上所述,"加载jar包中的spring配置文件"是一个关键的Java开发实践,它...
在Spring MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。SSM框架的整合通常涉及到多个配置文件的组织和管理,其中一部分配置可能会被打包到独立...
- **Profile特定配置文件**:根据不同profile加载不同配置。 - **日志**: - **日志格式**:设置日志输出格式。 - **控制台输出**:配置日志在控制台的输出。 - **文件输出**:配置日志写入文件。 - **日志级别...
- 使用`spring.config.location`属性可以指定额外的配置文件位置,例如:`--spring.config.location=classpath:/module1.properties,classpath:/module2.properties`。 3. **命名规则与优先级** - Spring Boot...
在传统的XML配置中,我们需要在配置文件中显式声明每个bean的定义。然而,随着Java注解的普及,Spring引入了基于注解的配置,使得我们可以利用注解来标记那些需要由Spring管理的类。 Spring自动扫描机制主要涉及...
本篇文章将深入探讨Spring配置文件中的归类,主要包括IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两个重要概念。 ### 1. IOC (控制反转) IOC是Spring的核心特性,...
这项功能允许开发者无需在XML配置文件中显式声明bean,而是通过在类上添加特定注解(如@Service、@Repository、@Controller等)来让Spring容器自动发现并管理这些bean。这一特性极大地简化了Spring应用的配置,提高...
本文将深入探讨如何在 Spring 中有效地加载多个配置文件,以及这一策略背后的理论依据。 #### 二、为什么拆分配置文件 在一个复杂的应用程序中,可能包含了从表示层的Action到持久层的DataSource在内的各种组件。...
在`AppProperties`类中,我们可以定义属性的字段,并通过`@ConfigurationProperties`注解指定前缀,Spring Boot会自动从配置文件中匹配并注入值。 为了使Spring Boot能够找到JAR内的配置文件,可以在`src/main/...
- **在Spring环境中使用YAML暴露属性**:介绍如何在Spring环境中使用YAML配置文件。 - **Multi-profile YAML文档**:说明如何在同一份YAML文件中定义多份配置。 - **YAML缺点**:指出使用YAML作为配置文件格式的...
在Spring框架中,配置文件是应用的核心组成部分,它定义了bean的定义、依赖关系以及其他配置信息。本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`...
- **导入XML配置**:解释了如何在Spring Boot项目中引入XML配置文件。 - **自动配置** - **逐步替换自动配置**:探讨了如何逐步替换Spring Boot提供的默认配置。 - **禁用特定的自动配置**:说明了如何关闭不需要...
这是因为`ClassPathXmlApplicationContext`默认从classpath中查找配置文件,而这里的“文件系统”指的是应用运行时的环境。 #### 三、通过引入方式加载配置文件 第三种方式是在主配置文件中通过`<import>`标签导入...
- **目标**: 让开发者能够快速搭建 Spring 应用,并提供一系列约定优于配置的方法来消除复杂的 XML 配置文件。 - **核心功能**: 包括自动配置、启动器(starter)依赖、外部化配置等。 #### 二、入门 - **Spring ...
`<listener>`标签中的`<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>`定义了一个监听器,它会在Web应用启动时自动加载默认的Spring配置文件,即`/WEB-INF/...
- 也可以使用XML配置文件。 **16. 自动配置** - **16.1. 逐步替换自动配置** - 可以逐步替换默认的自动配置以满足特定需求。 - **16.2. 禁用特定的自动配置类** - 当不需要某些自动配置时,可以禁用它们。 **...
- **配置随机值**:介绍了如何在配置文件中使用随机值。 - **访问命令行属性**:说明了如何读取并使用命令行传递的参数。 - **Application属性文件**:讲解了如何使用application.properties或application.yml...
在Spring Boot框架中,配置文件是应用程序的核心组成部分,它们定义了应用的行为和各种服务的配置。本案例聚焦于"SpringBoot探索三",主要探讨如何添加、管理和使用配置文件,以及涉及的加密和安全措施。这里我们将...