Java Spring应用中application.yml配置属性无法加载怎么解决?
解决Spring无法从application.yml获取配置属性的问题
核心问题
你的ConfigProperties类缺少getter和setter方法,Spring的@ConfigurationProperties依赖setter方法注入配置值,没有这些方法的话,属性始终会是null。
修复步骤
1. 给配置属性类添加getter/setter
手动添加方法:
@ConfigurationProperties(prefix = "application") public class ConfigProperties { private String uploadpath; public String getUploadpath() { return uploadpath; } public void setUploadpath(String uploadpath) { this.uploadpath = uploadpath; } }
如果使用Lombok,可以用@Data注解自动生成getter、setter等方法,简化代码:
@Data @ConfigurationProperties(prefix = "application") public class ConfigProperties { private String uploadpath; }
2. 确保配置类被Spring识别
- 方法一:在启动类添加
@EnableConfigurationProperties(ConfigProperties.class),此时ConfigProperties不需要加@Configuration注解。 - 方法二:给
ConfigProperties添加@Configuration注解,同时确保该类所在的包被Spring组件扫描覆盖(启动类的@SpringBootApplication默认扫描自身所在包及子包)。
3. 验证application.yml的格式
确保yml文件的缩进正确(用2个空格缩进,不要用制表符),你的配置格式是正确的,示例如下:
application: uploadpath: src/main/resources/upload
验证修复
在DocumentService中调用props.getUploadpath()就能获取到配置值了,构造注入的方式是正确的,不需要改成@Autowired。
内容的提问来源于stack exchange,提问作者Taras Zhiganov
相关产品推荐
相关产品推荐

