使用@ConfigurationProperties注解获取为null的问题

本文解决了一个Spring Boot应用中通过get方法获取配置属性值为空的问题。作者最初尝试引入依赖和调整YAML配置格式,但未能解决问题。最终发现set方法不应被static修饰,移除static关键字后成功获取到了配置值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

通过get方法去取值一直为null。代码如下:

@Component
@ConfigurationProperties(prefix = "file")
public class ServiceConfig {

    /**
     * windows上传路径
     */
    private static String winUploadPath;

    public static String getWinUploadPath() {
        return winUploadPath;
    }

    public static void setWinUploadPath(String winUploadPath) {
        ServiceConfig.winUploadPath = winUploadPath;
    }
}

application.yml配置:

file:
  winUploadPath: D:/opt/tongue/uploadPath

二、解决过程

过程一

刚开始一直ide弹这个框,以为是这个问题。
在这里插入图片描述
然后搜了资料,有的说下面依赖是生成配置元信息,不引入yml文件就失效了

于是引入之后并没有效果!!!

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
</dependency>

过程二

不要在application.yml/properties文件中使用camel大小写。尽量用-分割。
我看了一下原生框架的配置,发现人家确实没大小写,于是改了仍然没有用。

过程三(成功解决!)

因为想的是直接获取属性,所以都是设置的static,包括set方法。于是set方法去除掉static后 成功解决。

三、总结

set方法被static 修饰无法获取到值!!!

不过尽量咱们也规范点不要在application当中区分大小写,尽量用- 。
用横杠的话,其实在java文件当中,他是会自动转换的。

我最终改成了这样,发现在java文件当中的winUploadPath属性照样可以读到值。

file:
  win-upload-path: D:/opt/tongue/uploadPath

还有要注意的就是一定要有get、set方法,没有貌似也读不了值的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值