解决static类使用@Value获取yml文件获取不到的问题

 更新时间:2024年09月19日 16:06:42   作者:只会看代码的可达鸭  
在静态类中直接使用@Value注解无法获取yml文件中的配置,解决方案是在工具类Utils中创建静态的setter方法,并从外部类ServiceClass中调用这个方法来设置值,这种方法通过外部调用来间接设置静态变量的值,从而成功读取yml配置

static类使用@Value获取yml文件获取不到的问题

背景

要在static的类中访问yml中的配置。

直接在静态类中使用@Value是获取不到配置

解决方案

通过再工具类内部构造静态得setter方法,外部类进行调用。

1.yml定义

2.ServiceClass类,调用工具类的静态方法

public class ServiceClass {

    @Value("${fileFormatConfig.picture}")
    private String PICTURE_FORMAT;
    @Value("${fileFormatConfig.video}")
    private String VIDEO_FORMAT;
    @Value("${fileFormatConfig.audio}")
    private String AUDIO_FORMAT;

    public void startDetection() {
        //调用静态工具类
        TestUtils.init(PICTURE_FORMAT, VIDEO_FORMAT, AUDIO_FORMAT);
        TestUtils.originalTextDetection();
    }

}

3.Utils工具类

public class TestUtils {
    private static String PICTURE_FORMAT;
    private static String VIDEO_FORMAT;
    private static String AUDIO_FORMAT;

    // 静态setter,由外部类的某个方法(如@PostConstruct)调用
    public static void init(String pictureFormat, String videoFormat, String audioFormat) {
        PICTURE_FORMAT = pictureFormat;
        VIDEO_FORMAT = videoFormat;
        AUDIO_FORMAT = audioFormat;
    }

    public static void originalTextDetection() {
        System.out.println(PICTURE_FORMAT);
        System.out.println(VIDEO_FORMAT);
        System.out.println(AUDIO_FORMAT);
    }

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java集合进行排序的方式总结

    java集合进行排序的方式总结

    在本篇文章里小编给大家整理的是一篇关于java集合进行排序的两种方式总结,有兴趣的朋友们可以学习参考下。
    2021-08-08
  • Spring Boot 3.x 中 WebClient 示例详解析

    Spring Boot 3.x 中 WebClient 示例详解析

    SpringBoot3.x中WebClient是响应式HTTP客户端,替代RestTemplate,支持异步非阻塞请求,涵盖GET/POST/PUT/DELETE等方法,通过链式调用处理响应,需注意非阻塞I/O及超时、异常配置,本文给大家介绍SpringBoot3.x中WebClient示例,感兴趣的朋友一起看看吧
    2025-07-07
  • SpringBoot2之PUT请求接收不了参数的解决方案

    SpringBoot2之PUT请求接收不了参数的解决方案

    这篇文章主要介绍了SpringBoot2之PUT请求接收不了参数的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 浅谈web服务器项目中静态请求和动态请求处理

    浅谈web服务器项目中静态请求和动态请求处理

    这篇文章主要介绍了浅谈web服务器项目中静态请求和动态请求处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 改善Java代码之慎用java动态编译

    改善Java代码之慎用java动态编译

    这篇文章主要介绍了改善Java代码之慎用java动态编译,需要的朋友可以参考下
    2021-04-04
  • 如何解决报错:java.net.BindException:无法指定被请求的地址问题

    如何解决报错:java.net.BindException:无法指定被请求的地址问题

    在Linux虚拟机上安装并启动Tomcat时遇到启动失败的问题,通过检查端口及配置文件未发现异常,后发现/etc/hosts文件中缺少localhost的映射,添加后重启Tomcat成功,Tomcat启动时会检查localhost的IP映射,缺失或错误都可能导致启动失败
    2024-10-10
  • 一个Java的main方法在JVM中的执行流程示例详解

    一个Java的main方法在JVM中的执行流程示例详解

    main方法是Java程序的入口点,程序从这里开始执行,这篇文章主要介绍了一个Java的main方法在JVM中执行流程的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • @RequestParam 参数偶尔丢失的解决

    @RequestParam 参数偶尔丢失的解决

    这篇文章主要介绍了@RequestParam 参数偶尔丢失的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring Boot整合MyBatis-Flex全过程

    Spring Boot整合MyBatis-Flex全过程

    这篇文章主要介绍了Spring Boot整合MyBatis-Flex全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 浅析SpringBoot中使用thymeleaf找不到.HTML文件的原因

    浅析SpringBoot中使用thymeleaf找不到.HTML文件的原因

    这篇文章主要介绍了SpringBoot中使用thymeleaf找不到.HTML文件的原因分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论