Spring无法识别config目录下的application.properties问题求助
解决Spring无法识别config文件夹中application.properties的问题
常见排查与修复方案
1. 确认配置文件目录位置
Spring Boot对配置文件的加载有固定优先级,config文件夹的位置要符合规则:
- 若放在项目根目录,需和
src文件夹同级,不能嵌套在src内部 - 若放在classpath下,必须是
src/main/resources/config,这是Spring Boot默认扫描的classpath子目录
2. 显式指定配置文件路径
自动扫描失效时,强制指定路径:
- 代码方式:修改启动类main方法,添加配置路径指定
@SpringBootApplication public class Server { public static void main(String[] args) { SpringApplication application = new SpringApplication(Server.class); // 指向classpath下的config目录 application.setDefaultProperties(Map.of("spring.config.location", "classpath:/config/")); application.run(args); } }
- VM参数方式:确保参数路径准确,比如:
如果是项目根目录下的config,路径改为-Dspring.config.location=classpath:/config/application.propertiesfile:./config/application.properties
3. 校验IntelliJ资源配置
即使标记了资源文件夹,也要确认打包规则:
- 打开
File -> Project Structure -> Modules,选中你的模块 - 切换到
Resources标签,检查config文件夹的Resource Pattern为**/*,且无排除规则 - 执行
Build -> Rebuild Project,确保资源文件被正确打包到classpath
4. 检查配置文件语法细节
你的配置里server.port = 8090存在空格,虽然Spring Boot兼容,但建议改为server.port=8090避免潜在解析问题;同时确认${MYSQL_HOST:URL}中的默认值URL是有效的数据库地址。
5. 验证配置是否生效
启动项目后,可通过两种方式验证:
- 查看控制台日志,搜索关键词
Config data loaded from,确认是否加载到目标配置文件 - 在代码中注入
Environment打印配置项:
@Autowired private Environment env; // 在任意Bean的初始化方法中打印 @PostConstruct public void checkConfig() { System.out.println("当前端口:" + env.getProperty("server.port")); }
内容的提问来源于stack exchange,提问作者Alex_X1
相关产品推荐
相关产品推荐

