Spring Boot Web应用配置属性加载失败原因求助
兄弟,我帮你梳理下Spring Boot 2里application.properties加载失败的常见原因和排查步骤,你可以逐一核对:
检查文件位置是否合规
Spring Boot默认只会从这几个优先级从高到低的位置加载配置文件:- 项目根目录下的
config文件夹 - 项目根目录
src/main/resources/config文件夹src/main/resources文件夹
别把文件乱放,比如误放到src/main/java目录下,Spring Boot根本扫描不到。
- 项目根目录下的
核对文件命名是否精准
注意文件名是大小写敏感的!必须是application.properties,别写成Application.properties或者application.prop这种变体,Spring Boot不认。检查Maven配置是否误排除资源
打开你的pom.xml,看看有没有把src/main/resources下的properties文件排除打包的配置,比如这种坑人的配置:<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <!-- 这行要删掉! --> </excludes> </resource> </resources> </build>正常情况下Maven会自动把
src/main/resources下的文件打包到classpath,别画蛇添足加排除规则。写个小验证确认配置是否真的没加载
可以在控制器里加个简单的接口测试:@RestController public class ConfigTestController { @Value("${test.demo.key}") // 替换成你在properties里写的配置键 private String demoValue; @GetMapping("/check-config") public String checkConfig() { return "读取到的配置值:" + demoValue; } }启动项目后访问
/check-config,如果返回null或者报错,说明确实没读到;如果能返回值,那可能是你之前的配置使用方式有问题,不是加载失败。确认启动类的包路径是否正确
带@SpringBootApplication注解的启动类要放在根包下,比如你的控制器在com.example.controller,启动类就得在com.example下。不然Spring Boot的自动配置扫描范围不对,可能间接导致配置加载异常(一般还会伴随组件无法注入的问题)。排查自定义配置逻辑的干扰
如果你写了@Configuration类或者用了@PropertySource注解,要确认这些配置有没有屏蔽默认的application.properties加载,比如:@PropertySource("classpath:custom.properties") // 这种只会加载custom.properties,不会自动读application.properties @Configuration public class CustomConfig { // ... }这种情况要么加上
@PropertySource("classpath:application.properties"),要么改用@ConfigurationProperties配合@EnableConfigurationProperties来加载配置。
内容的提问来源于stack exchange,提问作者dave

