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

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

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

解决方式1

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

  1. @Configuration
  2. public class DemoConfig {
  3. //给静态变量赋值
  4. @Value("${mvc.test}")
  5. public int test;
  6. public void setTest(int test) {
  7. this.test = test;
  8. }
  9. public static int TEST;
  10. @PostConstruct
  11. public void init(){
  12. DemoConfig.TEST = test;
  13. }
  14. }

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

  1. @Component
  2. public class MyConfig {
  3. public void show(){
  4. System.out.println(DemoConfig.TEST);
  5. }
  6. }

解决方式2

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

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

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

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

相关文章