使用@ConfigurationProperties注解获取为null的解决方法

 更新时间:2024年09月30日 10:14:48   作者:怪 咖@  
在SpringBoot中,当想需要获取到配置文件数据时,除了可以用 Spring 自带的@Value注解外,SpringBoot还提供了一种更加方便的方式:@ConfigurationProperties,但我们在通过通过get方法去取值一直为null,本文介绍了使用@ConfigurationProperties注解获取为null的解决方法

一、问题描述

通过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

到此这篇关于使用@ConfigurationProperties注解获取为null的解决方法的文章就介绍到这了,更多相关@ConfigurationProperties获取为null内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring的Event使用及说明

    Spring的Event使用及说明

    本文介绍了Spring中的事件机制,包括事件的实现方式、推送、监听器、异步事件、事件异常处理器等,并简要讲述了Java自带的观察者模式和事件机制
    2026-03-03
  • springBoot集成Elasticsearch 报错 Health check failed的解决

    springBoot集成Elasticsearch 报错 Health check failed的解决

    这篇文章主要介绍了springBoot集成Elasticsearch 报错 Health check failed的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 关于MyBatisSystemException异常产生的原因及解决过程

    关于MyBatisSystemException异常产生的原因及解决过程

    文章讲述了在使用MyBatis进行数据库操作时遇到的异常及其解决过程,首先考虑了事务问题,但未解决,接着怀疑是MyBatis的一级缓存问题,关闭缓存后问题依旧存在,最终发现是SQL映射文件中的参数传递错误,使用了错误的标签导致循环插入
    2025-01-01
  • Spring Boot日志SLF4J和Logback示例详解

    Spring Boot日志SLF4J和Logback示例详解

    这篇文章主要介绍了Spring Boot日志SLF4J和Logback详解,Logback相比于Log4j,性能提高了10倍以上的性能,占用的内存也变小了,并且文档十分详细,推荐使用Slf4j+Logback,需要的朋友可以参考下
    2023-07-07
  • intellij idea14打包apk文件和查看sha1值

    intellij idea14打包apk文件和查看sha1值

    这篇文章主要为大家详细介绍了intellij idea14打包apk文件和查看sha1值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Java之HashMap.values()转List时的错误和正确演示

    Java之HashMap.values()转List时的错误和正确演示

    这篇文章主要介绍了Java之HashMap.values()转List时的错误和正确演示,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java学习手册之Filter和Listener使用方法

    Java学习手册之Filter和Listener使用方法

    这篇文章主要介绍了Java学习手册之Filter 和 Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servlet之前或响应返回客户端之前对请求和响应进行拦截和处理,Listener用于监听JavaWeb应用中的各种事件,需要的朋友可以参考下
    2025-04-04
  • springboot详解整合swagger方案

    springboot详解整合swagger方案

    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 Restful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步
    2022-07-07
  • log4j配置失效日志中打印Debug信息问题

    log4j配置失效日志中打印Debug信息问题

    这篇文章主要介绍了log4j配置失效日志中打印Debug信息问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot整合Redis将对象写入redis的实现

    SpringBoot整合Redis将对象写入redis的实现

    本文主要介绍了SpringBoot整合Redis将对象写入redis的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论