如何配置Eclipse加载resources/config下的Spring Boot配置文件
Eclipse运行Spring Boot项目无法读取resources/config目录配置文件解决方案
问题与环境说明
使用Eclipse开发Spring Boot项目时,存放于src/main/resources/config目录下的配置文件无法被正常加载,但直接放置在resources根目录的配置可正常读取。按照Spring Boot官方规则,config目录本属于默认支持的配置加载路径。
相关环境与现象:
- Eclipse版本:2022-06 (4.24.0)
- Spring Boot版本:2.6.8
- 可正常加载的配置路径:
project/src/main/resources/application-test.yaml - 无法加载的配置路径:
project/src/main/resources/config/application-test.yamlproject/src/main/resources/config/some-other-config.yaml
- 项目结构参考:

解决步骤
1. 修复Eclipse类路径资源配置(90%以上该问题由这个原因导致)
Eclipse默认的构建路径规则可能未将config目录下的文件纳入类路径输出,按以下步骤调整:
- 右键项目根目录,选择
Build Path > Configure Build Path - 切换到
Source标签页,找到src/main/resources条目,检查其Excluded(排除)规则 - 如果排除规则中存在匹配config目录的项,选中后点击
Remove删除,确保排除规则为空或仅匹配不需要加载的文件类型 - 保存配置后,右键项目选择
Refresh,如果是Maven/Gradle项目再执行一次依赖刷新(Maven > Update Project/Gradle > Refresh Gradle Project)即可。
2. 检查启动配置是否覆盖了默认配置路径
如果手动在启动参数中配置过spring.config.location,会直接覆盖Spring Boot默认的配置加载路径列表,导致config目录不被扫描:
- 右键启动类,选择
Run As > Run Configurations - 找到对应的Spring Boot启动项,切换到
Arguments标签页,检查VM参数和程序参数 - 如果存在自定义的
spring.config.location配置,要么删除该配置恢复默认扫描规则,要么在路径列表中补充classpath:/config/路径。
如果是激活test profile加载application-test.yaml,直接添加VM参数-Dspring.profiles.active=test即可,不需要额外指定配置路径。
3. 自定义命名配置文件的加载方式
对于some-other-config.yaml这类非application开头的自定义配置文件,Spring Boot不会自动扫描加载,需要手动引入:
- 方式一:在主配置文件中通过config import引入,适用于Spring Boot 2.4及以上版本:
spring: config: import: classpath:config/some-other-config.yaml
- 方式二:在配置类上通过
@PropertySource注解指定全类路径加载:
@Configuration @PropertySource("classpath:config/some-other-config.yaml") public class AppConfig { }
注意路径必须加classpath:前缀,否则会从项目工作目录查找导致加载失败。
4. 校验构建工具的资源过滤规则
如果是Maven项目,检查pom.xml中的资源配置,确保没有过滤config目录下的配置文件,参考配置如下:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.yaml</include> <include>**/*.yml</include> <include>**/*.properties</include> </includes> </resource> </resources> </build>
配置完成后执行一次mvn clean compile,再刷新Eclipse项目即可。
内容的提问来源于stack exchange,提问作者sub
相关产品推荐
相关产品推荐

