开发者

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

开发者 https://www.devze.com 2024-09-20 10:31 出处:网络 作者: 只会看代码的可达鸭
目录static类使用@Value获取yml文件获取不到的问题背景解决方案1.yml定义2.ServiceClashttp://www.devze.coms类,调用工具类的静态方法3.Utils工具类总结static类使用@Value获取yml文件获取不到的问题
目录
  • static类使用@Value获取yml文件获取不到的问题
    • 背景
  • 解决方案
    • 1.yml定义
    • 2.ServiceClashttp://www.devze.coms类,调用工具类的静态方法
    • 3.Utils工具类
  • 总结

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

    背景

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

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

    解决方案

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

    1.yml定义

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

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

    public class ServiceClass {
    
        @Value("${fileFormatConfig.picture}")
        private String PICTURE_FORMAT;
        @Value("${fileFormatConfig.video}")
        pri编程vate String VIDEO_FORMAT;
        @Value("${fileFormatConfig.audio}")
        private String AUDIO_FORMAT;
    
        public void startDetection() {
            //调用静态工具类
            TestUtjavascriptils.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 originaljavascriptTextDetection() {
            System.out.println(PICTURE_FORMAT);
            System.out.println(VIDEO_FORMAT);
            System.out.println(AUDIO_FORMAT);
        }
    
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号