SpringBoot-静态变量读取yml配置信息

x33g5p2x  于2022-06-24 转载在 Spring  
字(0.9k)|赞(0)|评价(0)|浏览(460)

因为spring加载静态方法比IOC早,所以不能直接使用@Value注解读取yml配置,读取结果往往是null。

解决方式1

我们可以通过@PostConstruct在服务加载Servlet的时候运行

@Configuration
public class DemoConfig {

    //给静态变量赋值
    @Value("${mvc.test}")
    public  int test;
    public void setTest(int test) {
        this.test = test;
    }
    
    

    public static   int TEST;
    @PostConstruct
    public  void init(){
        DemoConfig.TEST = test;
    }

}

然后在我们需要的地方调用就行了

@Component
public class MyConfig {
    public  void show(){
        System.out.println(DemoConfig.TEST);
    }
}

解决方式2

我们可以通过@AutoConfigureAfter 来在当前类注入到容器之前去加载相关配置类

@Configuration
public class DemoConfig {
    public static int test;
    //给静态变量赋值
    @Value("${mvc.test}")
    public void setTest(int test) {
        DemoConfig.test = test;
    }
}
@AutoConfigureAfter({DemoConfig.class})  //加载当前文件之前先去加载DemoConfig文件
@Component
public class MyConfig {
    public  void show(){
        //然后在我们需要的地方调用就行了
        System.out.println(DemoConfig.test);
    }

}

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^

免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。

相关文章